---
title:  Region Shortcuts Reference
---

<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->

This topic describes the various region shortcuts you can use to configure <%=vars.product_name%> regions.

## <a id="reference_w2h_3cd_lk" class="no-quick-link"></a>LOCAL

### Description

A region configured with the <span class="keyword parmname">LOCAL</span> region shortcut is scoped only to its JVM and is not visible to other peer members. The region does not distribute data and operations to other caches.

### Default Attributes

<span class="keyword parmname">Region Attributes</span>

|        |       |
|--------|-------|
| scope: | local |
| data-policy: | NORMAL |

### gfsh Command Example

``` pre
gfsh>create region --name=myLOCALregion --type=LOCAL
```

``` pre
gfsh>describe region --name=myLOCALregion
..........................................................
Name            : myLOCALregion
Data Policy     : normal
Hosting Members : server1
                  server2

Non-Default Attributes Shared By Hosting Members  

 Type  |    Name     | Value
------ | ----------- | ------
Region | data-policy | NORMAL
       | size        | 0
```

### XML Definition of <span class="keyword parmname">LOCAL</span>

``` pre
<region name="myLOCALregion">
   <region-attributes scope="local"/>
</region>
```

## <a id="reference_wd5_lpy_lk" class="no-quick-link"></a>LOCAL\_HEAP\_LRU

### Description

A region configured with the <span class="keyword parmname">LOCAL\_HEAP\_LRU</span> region shortcut is scoped to its JVM and is not visible to other peer members. The region does not distribute data and operations to other caches. The region destroys the least recently used entries when it detects that the JVM is running low on memory.

### Default Attributes

<span class="keyword parmname">Region Attributes</span>

|    |    |
|----|----|
| scope: |  local |
| data-policy: | NORMAL  |

<span class="keyword parmname">Eviction Attributes</span>

|                     |                     |
|---------------------|---------------------|
| eviction-algorithm: | lru-heap-percentage |
| eviction-action:    | local-destroy       |

### gfsh Command Example

``` pre
gfsh>create region --name=myLHLregion --type=LOCAL_HEAP_LRU
```

``` pre
gfsh>describe region --name=myLHLregion
...........................................................
Name            : myLHLregion
Data Policy     : normal
Hosting Members : server1
                  server2

Non-Default Attributes Shared By Hosting Members  

  Type   |        Name        | Value
-------- | ------------------ | -------------------
Region   | data-policy        | NORMAL
         | size               | 0
Eviction | eviction-algorithm | lru-heap-percentage
         | eviction-action    | local-destroy
```

### XML Definition of <span class="keyword parmname">LOCAL\_HEAP\_LRU</span>

``` pre
<region name="myLHLregion">
   <region-attributes 
        scope="local">
      <eviction-attributes>
        <lru-heap-percentage 
           action="local-destroy">
          <class-name>
           org.apache.geode.internal.size.SizeClassOnceObjectSizer
          </class-name>
        </lru-heap-percentage>
      </eviction-attributes>
   </region-attributes>
</region>
```

## <a id="reference_adk_y4y_lk" class="no-quick-link"></a>LOCAL\_OVERFLOW

### Description

A region configured with the <span class="keyword parmname">LOCAL\_OVERFLOW</span> region shortcut is scoped only to its JVM and is not visible to other peer members. The region does not distribute data and operations to other caches. The region moves the values of entries to disk when it detects that the JVM is running low on memory.

### Default Attributes

<span class="keyword parmname">Region Attributes</span>

|    |    |
|----|----|
| scope: |  local |
| data-policy: | NORMAL |

<span class="keyword parmname">Eviction Attributes</span>

|                     |                     |
|---------------------|---------------------|
| eviction-algorithm: | lru-heap-percentage |
| eviction-action:    | overflow-to-disk    |

### gfsh Command Example

``` pre
gfsh>create region --name=myLOregion --type=LOCAL_OVERFLOW
```

``` pre
gfsh>describe region --name=myLOregion
...........................................................
Name            : myLOregion
Data Policy     : normal
Hosting Members : server1
                  server2

Non-Default Attributes Shared By Hosting Members  

  Type   |        Name        | Value
-------- | ------------------ | -------------------
Region   | data-policy        | NORMAL
         | size               | 0
Eviction | eviction-algorithm | lru-heap-percentage
         | eviction-action    | overflow-to-disk
```

### XML Definition of <span class="keyword parmname">LOCAL\_OVERFLOW</span>

``` pre
<region name="myLOregion">
    <region-attributes 
        scope="local">
      <eviction-attributes>
        <lru-heap-percentage 
           action="overflow-to-disk"/>
      </eviction-attributes>
    </region-attributes>
</region>
```

## <a id="reference_l5r_y4y_lk" class="no-quick-link"></a>LOCAL\_PERSISTENT

### Description

A region configured with the <span class="keyword parmname">LOCAL\_PERSISTENT</span> region shortcut is scoped to its JVM and is not visible to other peer members. The region does not distribute data and operations to other caches. The region writes its state to disk and can recover that state when the member restarts.

### Default Attributes

<span class="keyword parmname">Region Attributes</span>

|    |    |
|----|----|
| scope: |  local |
| data-policy: | PERSISTENT_REPLICATE |

### gfsh Command Example

``` pre
gfsh>create region --name=myLPregion --type=LOCAL_PERSISTENT
Member  | Status
------- | -----------------------------------------
server2 | Region "/myLPregion" created on "server2"
server1 | Region "/myLPregion" created on "server1"

gfsh>describe region --name=myLPregion
..........................................................
Name            : myLPregion
Data Policy     : persistent replicate
Hosting Members : server1
                  server2

Non-Default Attributes Shared By Hosting Members  

 Type  | Name | Value
------ | ---- | -----
Region | size | 0
```

### XML Definition of <span class="keyword parmname">LOCAL\_PERSISTENT</span>

``` pre
<region name="myLPregion">
    <region-attributes 
      scope="local" 
      data-policy="persistent-replicate"/>
</region>
```

## <a id="reference_a45_y4y_lk" class="no-quick-link"></a>LOCAL\_PERSISTENT\_OVERFLOW

### Description

A region configured with the <span class="keyword parmname">LOCAL\_PERSISTENT\_OVERFLOW</span> region shortcut is scoped to its JVM and is not visible to other peer members. The region does not distribute data and operations to other caches. The region writes its state to disk and can recover that state when the member restarts. The region also removes the values of entries from memory when it detects that the JVM is running low on memory.


### Default Attributes

<span class="keyword parmname">Region Attributes</span>

|    |    |
|----|----|
| scope: |  local |
| data-policy: | PERSISTENT_REPLICATE |

<span class="keyword parmname">Eviction Attributes</span>

|                     |                     |
|---------------------|---------------------|
| eviction-algorithm: | lru-heap-percentage |
| eviction-action:    | overflow-to-disk    |

### gfsh Command Example

``` pre
gfsh>create region --name=myLPOregion --type=LOCAL_PERSISTENT_OVERFLOW
Member  | Status
------- | ------------------------------------------
server1 | Region "/myLPOregion" created on "server1"
server2 | Region "/myLPOregion" created on "server2"

gfsh>describe region --name=myLPOregion
...........................................................
Name            : myLPOregion
Data Policy     : persistent replicate
Hosting Members : server1
                  server2

Non-Default Attributes Shared By Hosting Members  

  Type   |        Name        | Value
-------- | ------------------ | -------------------
Region   | size               | 0
Eviction | eviction-algorithm | lru-heap-percentage
         | eviction-action    | overflow-to-disk
```

### XML Definition of <span class="keyword parmname">LOCAL\_PERSISTENT\_OVERFLOW</span>

``` pre
<region name="myLPOregion">
   <region-attributes 
        scope="local" 
        data-policy="persistent-replicate">
      <eviction-attributes>
        <lru-heap-percentage 
          action="overflow-to-disk"/>
      </eviction-attributes>
   </region-attributes>
</region>
```
## <a id="reference_ow5_4qy_lk" class="no-quick-link"></a>PARTITION

### Description

A region configured with the <span class="keyword parmname">PARTITION</span> region shortcut is partitioned across each peer member that created the region.

### Default Attributes

<span class="keyword parmname">Region Attributes</span>

|    |    |
|----|----|
| data-policy: | PARTITION |

### gfsh Command Example

``` pre
gfsh>create region --name=myPregion --type=PARTITION
Member  | Status
------- | ----------------------------------------
server1 | Region "/myPregion" created on "server1"
server2 | Region "/myPregion" created on "server2"

gfsh>describe region --name=myPregion
..........................................................
Name            : myPregion
Data Policy     : partition
Hosting Members : server1
                  server2

Non-Default Attributes Shared By Hosting Members  

 Type  | Name | Value
------ | ---- | -----
Region | size | 0
```

### XML Definition of PARTITION

``` pre
<region name="myPregion">
    <region-attributes 
      data-policy="partition"/>
  </region>
```

## <a id="reference_twx_y4y_lk" class="no-quick-link"></a>PARTITION\_HEAP\_LRU

### Description

A region configured with <span class="keyword parmname">PARTITION\_HEAP\_LRU</span> is partitioned across each peer member that created the region. The region destroys entries when it detects that the JVM is running low on memory.

### Default Attributes

<span class="keyword parmname">Region Attributes</span>

|    |    |
|----|----|
| data-policy: | PARTITION |

<span class="keyword parmname">Eviction Attributes</span>

|                     |                     |
|---------------------|---------------------|
| eviction-algorithm: | lru-heap-percentage |
| eviction-action:    | local-destroy       |

### gfsh Command Example

``` pre
gfsh>create region --name=myPHLregion --type=PARTITION_HEAP_LRU
Member  | Status
------- | ------------------------------------------
server1 | Region "/myPHLregion" created on "server1"
server2 | Region "/myPHLregion" created on "server2"

gfsh>describe region --name=myPHLregion
...........................................................
Name            : myPHLregion
Data Policy     : partition
Hosting Members : server1
                  server2

Non-Default Attributes Shared By Hosting Members  

  Type   |        Name        | Value
-------- | ------------------ | -------------------
Region   | size               | 0
Eviction | eviction-algorithm | lru-heap-percentage
         | eviction-action    | local-destroy
```

### XML Definition of <span class="keyword parmname">PARTITION\_HEAP\_LRU</span>

``` pre
<region name="myPHLregion">
  <region-attributes 
      data-policy="partition">
      <eviction-attributes>
        <lru-heap-percentage 
            action="local-destroy">
            <class-name>org.apache.geode.internal.size.SizeClassOnceObjectSizer</class-name>
        </lru-heap-percentage>
      </eviction-attributes>
  </region-attributes>
</region>
```

## <a id="reference_js1_z4y_lk" class="no-quick-link"></a>PARTITION\_OVERFLOW

### Description

A region configured with the <span class="keyword parmname">PARTITION\_OVERFLOW</span> region shortcut has state that is partitioned across each peer member that creates the region. The region moves the values of entries to disk when it detects that the JVM is running low on memory.

### Default Attributes

<span class="keyword parmname">Region Attributes</span>

|    |    |
|----|----|
| data-policy: | PARTITION |

<span class="keyword parmname">Eviction Attributes</span>

|                     |                     |
|---------------------|---------------------|
| eviction-algorithm: | lru-heap-percentage |
| eviction-action:    | overflow-to-disk    |

### gfsh Command Example

``` pre
gfsh>create region --name=myPOregion --type=PARTITION_OVERFLOW
Member  | Status
------- | -----------------------------------------
server1 | Region "/myPOregion" created on "server1"
server2 | Region "/myPOregion" created on "server2"

gfsh>describe region --name=myPOregion
...........................................................
Name            : myPOregion
Data Policy     : partition
Hosting Members : server1
                  server2

Non-Default Attributes Shared By Hosting Members  

  Type   |        Name        | Value
-------- | ------------------ | -------------------
Region   | size               | 0
Eviction | eviction-algorithm | lru-heap-percentage
         | eviction-action    | overflow-to-disk
```

### XML Definition of <span class="keyword parmname">PARTITION\_OVERFLOW</span>

``` pre
<region name="myPOregion">
    <region-attributes 
        data-policy="partition">
        <eviction-attributes>
           <lru-heap-percentage 
             action="overflow-to-disk"/>
        </eviction-attributes>
    </region-attributes>
</region>
```

## <a id="reference_d4k_jpy_lk" class="no-quick-link"></a>PARTITION\_PERSISTENT

### Description

A region configured with the <span class="keyword parmname">PARTITION\_PERSISTENT</span> region shortcut has state that is partitioned across each peer member that creates the region. The region writes its state to disk and can recover that state when the member restarts.

### Default Attributes

<span class="keyword parmname">Region Attributes</span>

|    |    |
|----|----|
| data-policy: | PERSISTENT_PARTITION |

### gfsh Command Example

``` pre
gfsh>create region --name=myPPregion --type=PARTITION_PERSISTENT
Member  | Status
------- | -----------------------------------------
server1 | Region "/myPPregion" created on "server1"
server2 | Region "/myPPregion" created on "server2"

gfsh>describe region --name=myPPregion
..........................................................
Name            : myPPregion
Data Policy     : persistent partition
Hosting Members : server1
                  server2

Non-Default Attributes Shared By Hosting Members  

 Type  | Name | Value
------ | ---- | -----
Region | size | 0
```

### XML Definition of <span class="keyword parmname">PARTITION\_PERSISTENT</span>

``` pre
<region name="myPPregion">
    <region-attributes 
     data-policy="persistent-partition"/>
</region>
```

## <a id="reference_v5l_jpy_lk" class="no-quick-link"></a>PARTITION\_PERSISTENT\_OVERFLOW

### Description

A region configured with the <span class="keyword parmname">PARTITION\_PERSISTENT\_OVERFLOW</span> region shortcut has state that is partitioned across each peer member that creates the region. The region writes its state to disk and can recover that state when the member restarts. The region removes the values of entries from memory when it detects that the JVM is running low on memory.

### Default Attributes

<span class="keyword parmname">Region Attributes</span>

|    |    |
|----|----|
| data-policy: | PERSISTENT_PARTITION |

<span class="keyword parmname">Eviction Attributes</span>

|                     |                     |
|---------------------|---------------------|
| eviction-algorithm: | lru-heap-percentage |
| eviction-action:    | overflow-to-disk    |

### gfsh Command Example

``` pre
gfsh>create region --name=myPPOregion --type=PARTITION_PERSISTENT_OVERFLOW
Member  | Status
------- | ------------------------------------------
server2 | Region "/myPPOregion" created on "server2"
server1 | Region "/myPPOregion" created on "server1"

gfsh>describe region --name=myPPOregion
...........................................................
Name            : myPPOregion
Data Policy     : persistent partition
Hosting Members : server1
                  server2

Non-Default Attributes Shared By Hosting Members  

  Type   |        Name        | Value
-------- | ------------------ | -------------------
Region   | size               | 0
Eviction | eviction-algorithm | lru-heap-percentage
         | eviction-action    | overflow-to-disk
```

### XML Definition of <span class="keyword parmname">PARTITION\_PERSISTENT\_OVERFLOW</span>

``` pre
<region name="myPPOregion">
   <region-attributes 
        data-policy="persistent-partition">
        <eviction-attributes>
          <lru-heap-percentage 
             action="overflow-to-disk"/>
        </eviction-attributes>
   </region-attributes>
</region>
```

## <a id="reference_v4m_jpy_lk" class="no-quick-link"></a>PARTITION\_PROXY

### Description

A region configured with the <span class="keyword parmname">PARTITION\_PROXY</span> region shortcut has no local state and forwards all operations to a peer region configured with the <span class="keyword parmname">PARTITION</span> shortcut or a peer region configured with the <span class="keyword parmname">PARTITION\_PERSISTENT</span> shortcut.

### Default Attributes

<span class="keyword parmname">Region Attributes</span>

|    |    |
|----|----|
| data-policy: | PARTITION |

<span class="keyword parmname">Partition Attributes</span>

|                   |     |
|-------------------|-----|
| local-max-memory: | 0   |

### gfsh Command Example

``` pre
gfsh>create region --name=myPPXYregion --type=PARTITION_PROXY
Member  | Status
------- | -------------------------------------------
server1 | Region "/myPPXYregion" created on "server1"
server2 | Region "/myPPXYregion" created on "server2"

gfsh>describe region --name=myPPXYregion
...........................................................
Name             : myPPXYregion
Data Policy      : partition
Accessor Members : server1
                   server2

Non-Default Attributes Shared By Accessor Members  

  Type    |       Name       | Value
--------- | ---------------- | -----
Region    | size             | 0
Partition | local-max-memory | 0
```

### XML Definition of <span class="keyword parmname">PARTITION\_PROXY</span>

``` pre
<region name="myPPXYregion">
    <region-attributes 
        data-policy="partition">
        <partition-attributes 
           local-max-memory="0"/>
    </region-attributes>
</region>
```

## <a id="reference_c1n_jpy_lk" class="no-quick-link"></a>PARTITION\_PROXY\_REDUNDANT

### Description

A region configured with the <span class="keyword parmname">PARTITION\_PROXY\_REDUNDANT</span> region shortcut has no local state and forwards all operations to a peer region configured with the <span class="keyword parmname">PARTITION\_REDUNDANT</span> shortcut or a peer region configured with the <span class="keyword parmname">PARTITION\_REDUNDANT\_PERSISTENT</span> shortcut.

### Default Attributes

<span class="keyword parmname">Region Attributes</span>

|    |    |
|----|----|
| data-policy: | PARTITION |

<span class="keyword parmname">Partition Attributes</span>

|                   |     |
|-------------------|-----|
| redundant-copies: | 1   |
| local-max-memory  | 0   |

### gfsh Command Example

``` pre
gfsh>create region --name=myPPRregion --type=PARTITION_PROXY_REDUNDANT
Member  | Status
------- | ------------------------------------------
server1 | Region "/myPPRregion" created on "server1"
server2 | Region "/myPPRregion" created on "server2"

gfsh>describe region --name=myPPRregion
...........................................................
Name             : myPPRregion
Data Policy      : partition
Accessor Members : server1
                   server2

Non-Default Attributes Shared By Accessor Members  

  Type    |       Name       | Value
--------- | ---------------- | -----
Region    | size             | 0
Partition | redundant-copies | 1
          | local-max-memory | 0
```

### XML Definition of <span class="keyword parmname">PARTITION\_PROXY\_REDUNDANT</span>

``` pre
<region name="myPPRregion">
    <region-attributes 
       data-policy="partition">
       <partition-attributes 
        redundant-copies="1" 
        local-max-memory="0"/>
    </region-attributes>
</region>
```

## <a id="reference_shn_jpy_lk" class="no-quick-link"></a>PARTITION\_REDUNDANT

### Description

A region configured with the <span class="keyword parmname">PARTITION\_REDUNDANT</span> region shortcut has state that is partitioned across each peer member that creates the region. The region maintains an extra copy of the data in memory.

### Default Attributes

<span class="keyword parmname">Region Attributes</span>

|    |    |
|----|----|
| data-policy: | PARTITION |

<span class="keyword parmname">Partition Attributes</span>

|                   |     |
|-------------------|-----|
| redundant-copies: | 1   |

### gfsh Command Example

``` pre
gfsh>create region --name=myPRregion --type=PARTITION_REDUNDANT
Member  | Status
------- | -----------------------------------------
server1 | Region "/myPRregion" created on "server1"
server2 | Region "/myPRregion" created on "server2"

gfsh>describe region --name=myPRregion
..........................................................
Name            : myPRregion
Data Policy     : partition
Hosting Members : server1
                  server2

Non-Default Attributes Shared By Hosting Members  

  Type    |       Name       | Value
--------- | ---------------- | -----
Region    | size             | 0
Partition | redundant-copies | 1
```

### XML Definition of <span class="keyword parmname">PARTITION\_REDUNDANT</span>

``` pre
<region name="myPRregion">
   <region-attributes 
       data-policy="partition">
       <partition-attributes 
          redundant-copies="1"/>
   </region-attributes>
</region>
```

## <a id="reference_m4n_jpy_lk" class="no-quick-link"></a>PARTITION\_REDUNDANT\_HEAP\_LRU

### Description

A region configured with the <span class="keyword parmname">PARTITION\_REDUNDANT\_HEAP\_LRU</span> region shortcut has state that is partitioned across each peer member that creates the region. The region keeps an extra copy of the data in memory. The region destroys entries when it detects that the JVM is running low on memory.

### Default Attributes

<span class="keyword parmname">Region Attributes</span>

|    |    |
|----|----|
| data-policy: | PARTITION |

<span class="keyword parmname">Eviction Attributes</span>

|                     |                     |
|---------------------|---------------------|
| eviction-algorithm: | lru-heap-percentage |
| eviction-action:    | local-destroy       |

<span class="keyword parmname">Partition Attributes</span>

|                   |     |
|-------------------|-----|
| redundant-copies: | 1   |

### gfsh Command Example

``` pre
gfsh>create region --name=myPRHLregion --type=PARTITION_REDUNDANT_HEAP_LRU
Member  | Status
------- | -------------------------------------------
server1 | Region "/myPRHLregion" created on "server1"
server2 | Region "/myPRHLregion" created on "server2"

gfsh>describe region --name=myPRHLregion
...........................................................
Name            : myPRHLregion
Data Policy     : partition
Hosting Members : server1
                  server2

Non-Default Attributes Shared By Hosting Members  

  Type    |        Name        | Value
--------- | ------------------ | -------------------
Region    | size               | 0
Eviction  | eviction-algorithm | lru-heap-percentage
          | eviction-action    | local-destroy
Partition | redundant-copies   | 1
```

### XML Definition of <span class="keyword parmname">PARTITION\_REDUNDANT\_HEAP\_LRU</span>

``` pre
<region name="myPRHLregion">
    <region-attributes 
        data-policy="partition">
        <partition-attributes redundant-copies="1"/>
        <eviction-attributes>
          <lru-heap-percentage action="local-destroy">
           <class-name>
            org.apache.geode.internal.size.SizeClassOnceObjectSizer
           </class-name>
          </lru-heap-percentage>
      </eviction-attributes>
   </region-attributes>
</region>
```

## <a id="reference_own_jpy_lk" class="no-quick-link"></a>PARTITION\_REDUNDANT\_OVERFLOW

### Description

A region configured with the <span class="keyword parmname">PARTITION\_REDUNDANT\_OVERFLOW</span> region shortcut has state that is partitioned across each peer member that creates the region. The region keeps an extra copy of the data in memory. The region moves the values of entries to disk when it detects that the JVM is running low on memory.

### Default Attributes

<span class="keyword parmname">Region Attributes</span>

|    |    |
|----|----|
| data-policy: | PARTITION |

<span class="keyword parmname">Eviction Attributes</span>

|                     |                     |
|---------------------|---------------------|
| eviction-algorithm: | lru-heap-percentage |
| eviction-action:    | overflow-to-disk    |

<span class="keyword parmname">Partition Attributes</span>

|                   |     |
|-------------------|-----|
| redundant-copies: | 1   |

### gfsh Command Example

``` pre
gfsh>create region --name=myPROregion --type=PARTITION_REDUNDANT_OVERFLOW
Member  | Status
------- | ------------------------------------------
server2 | Region "/myPROregion" created on "server2"
server1 | Region "/myPROregion" created on "server1"

gfsh>describe region --name=myPROregion
...........................................................
Name            : myPROregion
Data Policy     : partition
Hosting Members : server1
                  server2

Non-Default Attributes Shared By Hosting Members  

  Type    |        Name        | Value
--------- | ------------------ | -------------------
Region    | size               | 0
Eviction  | eviction-algorithm | lru-heap-percentage
          | eviction-action    | overflow-to-disk
Partition | redundant-copies   | 1
```

### XML Definition of <span class="keyword parmname">PARTITION\_REDUNDANT\_OVERFLOW</span>

``` pre
<region name="myPROregion">
   <region-attributes 
       data-policy="partition">
       <partition-attributes 
          redundant-copies="1"/>
       <eviction-attributes>
         <lru-heap-percentage 
           action="overflow-to-disk"/>
       </eviction-attributes>
   </region-attributes>
</region>
```

## <a id="reference_bd4_jpy_lk" class="no-quick-link"></a>PARTITION\_REDUNDANT\_PERSISTENT

### Description

A region configured with the <span class="keyword parmname">PARTITION\_REDUNDANT\_PERSISTENT</span> region shortcut has state that is partitioned across each peer member that creates the region. The region writes its state to disk and recovers its state from disk when the region is created. The region maintains an extra copy of the data in memory.

### Default Attributes

<span class="keyword parmname">Region Attributes</span>

|    |    |
|----|----|
| data-policy: | PERSISTENT_PARTITION |

<span class="keyword parmname">Partition Attributes</span>

|                   |     |
|-------------------|-----|
| redundant-copies: | 1   |

### gfsh Command Example

``` pre
gfsh>create region --name=myPRPregion --type=PARTITION_REDUNDANT_PERSISTENT
Member  | Status
------- | ------------------------------------------
server2 | Region "/myPRPregion" created on "server2"
server1 | Region "/myPRPregion" created on "server1"

gfsh>describe region --name=myPRPregion
..........................................................
Name            : myPRPregion
Data Policy     : persistent partition
Hosting Members : server1
                  server2

Non-Default Attributes Shared By Hosting Members  

  Type    |       Name       | Value
--------- | ---------------- | -----
Region    | size             | 0
Partition | redundant-copies | 1
```

### XML Definition of <span class="keyword parmname">PARTITION\_REDUNDANT\_PERSISTENT</span>

``` pre
<region name="myPRPregion">
   <region-attributes 
       data-policy="persistent-partition">
       <partition-attributes 
        redundant-copies="1"/>
   </region-attributes>
</region>
```

## <a id="reference_xqq_tvc_lk" class="no-quick-link"></a>PARTITION\_REDUNDANT\_PERSISTENT\_OVERFLOW

### Description

A region configured with the <span class="keyword parmname">PARTITION\_REDUNDANT\_PERSISTENT\_OVERFLOW</span> region shortcut has state that is partitioned across each peer member that creates the region. The region writes its state to disk and recovers its state from disk when the region is created. The region maintains an extra copy of the data in memory. The region removes the values of entries from memory when it detects that the JVM is running out of memory.

### Default Attributes

<span class="keyword parmname">Region Attributes</span>

|    |    |
|----|----|
| data-policy: | PERSISTENT_PARTITION |

<span class="keyword parmname">Eviction Attributes</span>

|                     |                     |
|---------------------|---------------------|
| eviction-algorithm: | lru-heap-percentage |
| eviction-action:    | overflow-to-disk    |

<span class="keyword parmname">Partition Attributes</span>

|                   |     |
|-------------------|-----|
| redundant-copies: | 1   |

### gfsh Command Example

``` pre
create region --name=myPRPOregion --type=PARTITION_REDUNDANT_PERSISTENT_OVERFLOW
```

``` pre
describe region --name=myPRPOregion
...........................................................
Name            : myPRPOregion
Data Policy     : persistent partition
Hosting Members : server1
                  server2

Non-Default Attributes Shared By Hosting Members  

  Type    |        Name        | Value
--------- | ------------------ | -------------------
Region    | size               | 0
Eviction  | eviction-algorithm | lru-heap-percentage
          | eviction-action    | overflow-to-disk
Partition | redundant-copies   | 1
```

### XML Definition of <span class="keyword parmname">PARTITION\_REDUNDANT\_PERSISTENT\_OVERFLOW</span>

``` pre
<region name="myPRPOregion">
    <region-attributes 
       data-policy="persistent-partition">
       <partition-attributes 
           redundant-copies="1"/>
       <eviction-attributes>
         <lru-heap-percentage 
            action="overflow-to-disk"/>
      </eviction-attributes>
    </region-attributes>
</region>
```

## <a id="reference_wq4_jpy_lk" class="no-quick-link"></a>REPLICATE

### Description

A region configured with the <span class="keyword parmname">REPLICATE</span> region shortcut has local state that is kept in sync with all other peer regions configured with a REPLICATE data policy.

### Default Attributes

<span class="keyword parmname">Region Attributes</span>

|    |    |
|----|----|
| scope: |  distributed-ack |
| data-policy: | REPLICATE |

### gfsh Command Example

``` pre
gfsh>create region --name=myRregion --type=REPLICATE

REPLICATE                       REPLICATE_PERSISTENT            REPLICATE_OVERFLOW              
REPLICATE_PERSISTENT_OVERFLOW   REPLICATE_HEAP_LRU              REPLICATE_PROXY                 

gfsh>create region --name=myRregion --type=REPLICATE
Member  | Status
------- | ----------------------------------------
server1 | Region "/myRregion" created on "server1"
server2 | Region "/myRregion" created on "server2"
```

### XML Definition of <span class="keyword parmname">REPLICATE</span>

``` pre
<region name="myRregion">
    <region-attributes 
       scope="distributed-ack" 
       data-policy="replicate"/>
</region>
```

## <a id="reference_xx4_jpy_lk" class="no-quick-link"></a>REPLICATE\_HEAP\_LRU

### Description

A region configured with the <span class="keyword parmname">REPLICATE\_HEAP\_LRU</span> region shortcut has local state that is kept in sync with all other peer regions configured with a REPLICATE data policy. The region destroys entries when it detects that the JVM is running low on memory.

**Note:**
Normally, you cannot have a `local-destroy` eviction policy on replicated regions. However, the REPLICATE\_HEAP\_LRU region is not the same as other replicated regions. This region is preloaded and remains in synch by registering interest in the keys of its peer's replicated regions.

### Default Attributes

<span class="keyword parmname">Region Attributes</span>

|    |    |
|----|----|
| scope: |  distributed-ack |
| data-policy: | PRELOADED |

 <span class="keyword parmname">Eviction Attributes</span>

<table>
<colgroup>
<col width="50%" />
<col width="50%" />
</colgroup>
<tbody>
<tr>
<td>eviction-algorithm:</td>
<td>lru-heap-percentage</td>
</tr>
<tr>
<td>eviction-action:</td>
<td>local-destroy
<div class="note note">
<b>Note:</b>
<p>Normally, you cannot have a <code class="ph codeph">local-destroy</code> eviction policy on replicated regions. However, the REPLICATE_HEAP_LRU region is not the same as other replicated regions. This region is preloaded and remains in synch by registering interest in the keys of its peer's replicated regions.</p>
</div></td>
</tr>
</tbody>
</table>

|                  |     |
|------------------|-----|
| interest-policy: | all |

### gfsh Command Example

``` pre
gfsh>create region --name=myRHLregion --type=REPLICATE_HEAP_LRU
Member  | Status
------- | -------------------------------------------
server1 | Region "/myRHLregion2" created on "server1"
server2 | Region "/myRHLregion2" created on "server2"

gfsh>describe region --name=myRHLregion
...........................................................
Name            : myRHLregion
Data Policy     : preloaded
Hosting Members : server1
                  server2

Non-Default Attributes Shared By Hosting Members  

  Type   |        Name        | Value
-------- | ------------------ | -------------------
Region   | size               | 0
Eviction | eviction-algorithm | lru-heap-percentage
         | eviction-action    | local-destroy
```

### XML Definition of <span class="keyword parmname">REPLICATE\_HEAP\_LRU</span>

``` pre
<region name="myRHLregion">
    <region-attributes 
       scope="distributed-ack" 
       data-policy="preloaded">
       <subscription-attributes 
          interest-policy="all"/>
       <eviction-attributes>
         <lru-heap-percentage 
            action="local-destroy">
            <class-name>org.apache.geode.internal.size.SizeClassOnceObjectSizer</class-name>
         </lru-heap-percentage>
       </eviction-attributes>
    </region-attributes>
</region>
```

## <a id="reference_t2p_jpy_lk" class="no-quick-link"></a>REPLICATE\_OVERFLOW

### Description

A region configured with the <span class="keyword parmname">REPLICATE\_OVERFLOW</span> region shortcut has local state that is kept in sync with all other peer regions configured with a <span class="keyword parmname">REPLICATE</span> data policy.

### Default Attributes

<span class="keyword parmname">Region Attributes</span>

|    |    |
|----|----|
| scope: |  distributed-ack |
| data-policy: | REPLICATE |

<span class="keyword parmname">Eviction Attributes</span>

|                     |                     |
|---------------------|---------------------|
| eviction-algorithm: | lru-heap-percentage |
| eviction-action:    | overflow-to-disk    |

### gfsh Command Example

``` pre
gfsh>create region --name=myROregion --type=REPLICATE_OVERFLOW
Member  | Status
------- | -----------------------------------------
server2 | Region "/myROregion" created on "server2"
server1 | Region "/myROregion" created on "server1"

gfsh>describe region --name=myROregion
...........................................................
Name            : myROregion
Data Policy     : replicate
Hosting Members : server1
                  server2

Non-Default Attributes Shared By Hosting Members  

  Type   |        Name        | Value
-------- | ------------------ | -------------------
Region   | size               | 0
Eviction | eviction-algorithm | lru-heap-percentage
         | eviction-action    | overflow-to-disk
```

### XML Definition of <span class="keyword parmname">REPLICATE\_OVERFLOW</span>

``` pre
<region name="myROregion">
    <region-attributes 
       scope="distributed-ack" 
       data-policy="replicate">
       <eviction-attributes>
          <lru-heap-percentage 
           action="overflow-to-disk"/>
       </eviction-attributes>
    </region-attributes>
</region>
```

## <a id="reference_emp_jpy_lk" class="no-quick-link"></a>REPLICATE\_PERSISTENT

### Description

A region configured with the <span class="keyword parmname">REPLICATE\_PERSISTENT</span> region shortcut has local state that is kept in sync with all other peer regions that are configured with a <span class="keyword parmname">REPLICATE</span> data policy. The region writes its state to disk and recovers that state when the member restarts.

### Default Attributes

<span class="keyword parmname">Region Attributes</span>

|    |    |
|----|----|
| scope: |  distributed-ack |
| data-policy: | PERSISTENT_REPLICATE |

### gfsh Command Example

``` pre
gfsh>create region --name=myRPregion --type=REPLICATE_PERSISTENT
Member  | Status
------- | -----------------------------------------
server2 | Region "/myRPregion" created on "server2"
server1 | Region "/myRPregion" created on "server1"

gfsh>describe region --name=myRPregion
..........................................................
Name            : myRPregion
Data Policy     : persistent replicate
Hosting Members : server1
                  server2

Non-Default Attributes Shared By Hosting Members  

 Type  | Name | Value
------ | ---- | -----
Region | size | 0
```

### XML Definition of <span class="keyword parmname">REPLICATE\_PERSISTENT</span>

``` pre
<region name="myRPregion">
    <region-attributes 
        scope="distributed-ack" 
        data-policy="empty"/>
</region>
```

## <a id="reference_tsp_jpy_lk" class="no-quick-link"></a>REPLICATE\_PERSISTENT\_OVERFLOW

### Description

A region configured with the <span class="keyword parmname">REPLICATE\_PERSISTENT\_OVERFLOW</span> region shortcut has local state that is kept in sync with all other peer regions configured with a <span class="keyword parmname">REPLICATE</span> data policy. The region writes its state to disk and recovers that state when the member restarts. The region removes the values of entries from memory when it detects that the JVM is running low on memory.

### Default Attributes

<span class="keyword parmname">Region Attributes</span>

|    |    |
|----|----|
| scope: |  distributed-ack |
| data-policy: | PERSISTENT_REPLICATE |

<span class="keyword parmname">Eviction Attributes</span>

|                     |                     |
|---------------------|---------------------|
| eviction-algorithm: | lru-heap-percentage |
| eviction-action:    | overflow-to-disk    |

### gfsh Command Example

``` pre
gfsh>create region --name=myRPOregion --type=REPLICATE_PERSISTENT

REPLICATE_PERSISTENT            REPLICATE_PERSISTENT_OVERFLOW   

gfsh>create region --name=myRPOregion --type=REPLICATE_PERSISTENT_OVERFLOW
Member  | Status
------- | ------------------------------------------
server1 | Region "/myRPOregion" created on "server1"
server2 | Region "/myRPOregion" created on "server2"

gfsh>describe region --name=myRPOregion
...........................................................
Name            : myRPOregion
Data Policy     : persistent replicate
Hosting Members : server1
                  server2

Non-Default Attributes Shared By Hosting Members  

  Type   |        Name        | Value
-------- | ------------------ | -------------------
Region   | size               | 0
Eviction | eviction-algorithm | lru-heap-percentage
         | eviction-action    | overflow-to-disk
```

### XML Definition of <span class="keyword parmname">REPLICATE\_PERSISTENT\_OVERFLOW</span>

``` pre
 <region name="myRPOregion">
    <region-attributes 
       scope="distributed-ack" 
       data-policy="persistent-replicate">
       <eviction-attributes>
         <lru-heap-percentage 
             action="overflow-to-disk"/>
      </eviction-attributes>
    </region-attributes>
</region>
```

## <a id="reference_n1q_jpy_lk" class="no-quick-link"></a>REPLICATE\_PROXY</span>

### Description

A region configured with the <span class="keyword parmname">REPLICATE\_PROXY</span> region shortcut has no local state and forwards all operations to a peer region configured with the [REPLICATE](#reference_wq4_jpy_lk) or [REPLICATE_PERSISTENT](#reference_emp_jpy_lk) region shortcut.

### Default Attributes

<span class="keyword parmname">Region Attributes</span>

|    |    |
|----|----|
| scope: |  distributed-ack |
| data-policy: | EMPTY |

### gfsh Command Example

``` pre
gfsh>create region --name=myRPXYregion --type=REPLICATE_PROXY
Member  | Status
------- | -------------------------------------------
server1 | Region "/myRPXYregion" created on "server1"
server2 | Region "/myRPXYregion" created on "server2"

gfsh>describe region --name=myRPXYregion
...........................................................
Name             : myRPXYregion
Data Policy      : empty
Accessor Members : server1
                   server2

Non-Default Attributes Shared By Accessor Members  

 Type  | Name | Value
------ | ---- | -----
Region | size | 0
```

### XML Definition of <span class="keyword parmname">REPLICATE\_PROXY</span>

``` pre
<region name="myRPXYregion">
    <region-attributes 
        scope="distributed-ack" 
        data-policy="empty"/>
</region>
```
