GridGain Developers Hub
GitHub logo GridGain iso GridGain.com
GridGain Software Documentation

Overview

This chapter explains how you can set cache configuration parameters.

Configuration Example

Below is an example of a cache configuration.

<bean class="org.apache.ignite.configuration.IgniteConfiguration">
    <property name="cacheConfiguration">
        <bean class="org.apache.ignite.configuration.CacheConfiguration">
            <property name="name" value="myCache"/>

            <property name="cacheMode" value="PARTITIONED"/>

            <property name="backups" value="2"/>

            <property name="rebalanceMode" value="SYNC"/>

            <property name="writeSynchronizationMode" value="FULL_SYNC"/>

            <property name="partitionLossPolicy" value="READ_ONLY_SAFE"/>
            <!-- Other parameters -->
        </bean>
    </property>
</bean>

For the full list of parameters, refer to the CacheConfiguration javadoc.

Parameter Description Default Value

name

The cache name.

None.

cacheMode

The cacheMode parameter defines the way data is distributed in the cluster.

In the PARTITIONED mode (default), the overall data set is divided into partitions and all partitions are split between participating nodes in a balanced manner.

In the REPLICATED mode, all the data is replicated to every node in the cluster.

See the Partitioned/Replicated Mode section for more details.

PARTITIONED

writeSynchronizationMode

Write synchronization mode. Refer to the Configuring Partition Backups section.

PRIMARY_SYNC

rebalanceMode

This parameter controls the way the rebalancing process is performed. Possible values include:

  • SYNC — Any requests to the cache’s API are blocked until rebalancing is completed.

  • ASYNC (default) — Rebalanching is performed in the background.

  • NONE — Rebalancing will not be triggered.

ASYNC

backups

The number of backup partitions for the cache.

0

partitionLossPolicy

Partition loss policy.

IGNORE

CacheConfiguration cacheCfg = new CacheConfiguration("myCache");

cacheCfg.setCacheMode(CacheMode.PARTITIONED);
cacheCfg.setBackups(2);
cacheCfg.setRebalanceMode(CacheRebalanceMode.SYNC);
cacheCfg.setWriteSynchronizationMode(CacheWriteSynchronizationMode.FULL_SYNC);
cacheCfg.setPartitionLossPolicy(PartitionLossPolicy.READ_ONLY_SAFE);

IgniteConfiguration cfg = new IgniteConfiguration();

cfg.setCacheConfiguration(cacheCfg);

// Start a node.
Ignition.start(cfg);

For the full list of parameters, refer to CacheConfiguration javadoc.

var cfg = new IgniteConfiguration
{
    CacheConfiguration = new[]
    {
        new CacheConfiguration
        {
            Name = "myCache",
            CacheMode = CacheMode.Partitioned,
            Backups = 2,
            RebalanceMode = CacheRebalanceMode.Sync,
            WriteSynchronizationMode = CacheWriteSynchronizationMode.FullSync,
            PartitionLossPolicy = PartitionLossPolicy.ReadOnlySafe
        }
    }
};
Ignition.Start(cfg);
CREATE TABLE IF NOT EXISTS Person (
  id int,
  city_id int,
  name varchar,
  age int,
  company varchar,
  PRIMARY KEY (id, city_id)
) WITH "cache_name=myCache,template=partitioned,backups=2";

For the full list of parameters, refer to the CREATE TABLE section.

Cache Templates

A cache template is an instance of CacheConfiguration that can be registered in the cluster and used later as a basis for creating new caches. A cache created from a template inherits all the properties of the template.

To create a template, define a cache configuration and add it to the Ignite instance, as shown below. If you want do define a cache template in the XML configuration file, you must add an asterisk to the template’s name. This is required to indicate that the configuration is a template and not an actual cache.

<property name="cacheConfiguration">
  <list>
    <bean abstract="true" class="org.apache.ignite.configuration.CacheConfiguration" id="cache-template-bean">
      <!-- when you create a template via XML configuration,
         you must add an asterisk to the name of the template -->
      <property name="name" value="myCacheTemplate*"/>
      <property name="cacheMode" value="PARTITIONED"/>
      <property name="backups" value="2"/>
      <!-- Other cache parameters -->
    </bean>
  </list>
</property>
IgniteConfiguration igniteCfg = new IgniteConfiguration();
try (Ignite ignite = Ignition.start(igniteCfg)) {
    CacheConfiguration cacheCfg = new CacheConfiguration("myCacheTemplate");

    cacheCfg.setBackups(2);
    cacheCfg.setCacheMode(CacheMode.PARTITIONED);

    // Register the cache template in Ignite.
    ignite.addCacheConfiguration(cacheCfg);
}
var ignite = Ignition.Start();

var cfg = new CacheConfiguration
{
    Name = "myCacheTemplate*",
    CacheMode = CacheMode.Partitioned,
    Backups = 2
};

ignite.AddCacheConfiguration(cfg);

Once the cache template is registered in the cluster, as shown in the code snippet above, you can use it to create another cache with the same configuration.