2.2. 組み込みキャッシュの作成と使用
Data Grid は、Cache Manager を制御する GlobalConfigurationBuilder
API と、キャッシュを設定する ConfigurationBuilder
API を提供します。
前提条件
-
infinispan-core
アーティファクトをpom.xml
の依存関係として追加します。
手順
CacheManager
を初期化します。注記キャッシュを作成する前に、必ず
cacheManager.start()
メソッドを呼び出してCacheManager
を初期化する必要があります。デフォルトのコンストラクターはこれを行いますが、オーバーロードされたバージョンのコンストラクターはこれを行いません。キャッシュマネージャーも重量のあるオブジェクトであり、Data Grid では、JVM ごとに 1 つのインスタンスのみをインスタンス化することを推奨します。
-
ConfigurationBuilder
API を使用して、キャッシュ設定を定義します。 getCache()
、createCache()
、またはgetOrCreateCache()
メソッドで、キャッシュを取得します。Data Grid では、
getOrCreateCache()
メソッドを使用することを推奨します。これは、すべてのノードでキャッシュを作成するか、既存のキャッシュを返すためです。-
必要であれば、キャッシュが再起動しても大丈夫なように、
PERMANENT
フラグを使用します。 -
cacheManager.stop()
メソッドを呼び出してCacheManager
を停止し、JVM リソースを解放してキャッシュを正常にシャットダウンします。
// Set up a clustered Cache Manager. GlobalConfigurationBuilder global = GlobalConfigurationBuilder.defaultClusteredBuilder(); // Initialize the default Cache Manager. DefaultCacheManager cacheManager = new DefaultCacheManager(global.build()); // Create a distributed cache with synchronous replication. ConfigurationBuilder builder = new ConfigurationBuilder(); builder.clustering().cacheMode(CacheMode.DIST_SYNC); // Obtain a volatile cache. Cache<String, String> cache = cacheManager.administration().withFlags(CacheContainerAdmin.AdminFlag.VOLATILE).getOrCreateCache("myCache", builder.build()); // Stop the Cache Manager. cacheManager.stop();
getCache()
メソッド
以下のように、キャッシュを取得するために getCache(String)
メソッドを呼び出します。
Cache<String, String> myCache = manager.getCache("myCache");
上記の操作は、myCache
という名前のキャッシュがまだ存在しない場合は作成し、それを返します。
getCache()
メソッドを使用すると、メソッドを呼び出すノードにのみキャッシュが作成されます。つまり、クラスター全体の各ノードで呼び出す必要のあるローカル操作を実行します。通常、複数のノードにまたがってデプロイされたアプリケーションは、初期化中にキャッシュを取得して、キャッシュが対称であり、各ノードに存在することを確認します。
createCache()
メソッド
createCache()
メソッドを呼び出して、クラスター全体でキャッシュを動的に作成します。
Cache<String, String> myCache = manager.administration().createCache("myCache", "myTemplate");
上記の操作では、後でクラスターに参加するすべてのノードにキャッシュが自動的に作成されます。
createCache()
メソッドを使用して作成するキャッシュは、デフォルトでは一時的です。クラスター全体がシャットダウンした場合、再起動時にキャッシュが自動的に再作成されることはありません。
PERMANENT
フラグ
PERMANENT フラグを使用して、キャッシュが再起動後も存続できるようにします。
Cache<String, String> myCache = manager.administration().withFlags(AdminFlag.PERMANENT).createCache("myCache", "myTemplate");
PERMANENT フラグを有効にするには、グローバルの状態を有効にし、設定ストレージプロバイダーを設定する必要があります。
設定ストレージプロバイダーの詳細は、GlobalStateConfigurationBuilder#configurationStorage() を参照してください。