第3章 キャッシュマネージャー
CacheManager
インターフェイスは Data Grid の主なエントリーポイントであり、以下を可能にします。
- キャッシュを設定および取得します。
- ノードの管理およびモニター
- クラスター全体でコードを実行する
- 詳細情報
Data Grid をアプリケーションに埋め込むか、リモートサーバーとして実行するかに応じて、EmbeddedCacheManager
または RemoteCacheManager
のいずれかを使用します。それらは一部のメソッドとプロパティーを共有しますが、それらにはセマンティックの違いがあることに注意してください。以下の章では、組み込み 実装の多くに重点を置いています。
CacheManager はヘビーウェイトオブジェクトであり、JVM ごとに複数の CacheManager が使用されないようにします(特定のセットアップに複数の設定が必要でない限り、いずれの方法でも最小および有限のインスタンス数になります)。
CacheManager を作成する最も簡単な方法は、以下のとおりです。
EmbeddedCacheManager manager = new DefaultCacheManager();
キャッシュなしで最も基本的なローカルモード、クラスター化されていないキャッシュマネージャーを開始します。CacheManagers にはライフサイクルがあり、デフォルトのコンストラクターも Lifecycle.start() を呼び出します。コンストラクターの過負荷バージョンが利用できます。CacheManager は起動しませんが、CacheManager を使用して Cache インスタンスを作成する前に、CacheManager を起動する必要があることに注意してください。
構築後は、JNDI、ServletContext、または IoC コンテナーなどの他のメカニズムを使用して対話する必要のあるコンポーネントで CacheManagers を利用できるようにする必要があります。
CacheManager で終了したら、manager.stop();
のリソースを解放できるように停止する必要があります。
これにより、スコープ内のすべてのキャッシュが適切に停止され、スレッドプールがシャットダウンされます。CacheManager がクラスター化されている場合、クラスターも適切に残ります。
3.1. キャッシュの取得
CacheManager
を設定した後、キャッシュを取得および制御できます。
以下のように、キャッシュを取得するために getCache(String)
メソッドを呼び出します。
Cache<String, String> myCache = manager.getCache("myCache");
上記の操作は、myCache
という名前のキャッシュがまだ存在しない場合は作成し、それを返します。
getCache()
メソッドを使用すると、メソッドを呼び出すノードにのみキャッシュが作成されます。つまり、クラスター全体の各ノードで呼び出す必要のあるローカル操作を実行します。通常、複数のノードにまたがってデプロイされたアプリケーションは、初期化中にキャッシュを取得して、キャッシュが対称であり、各ノードに存在することを確認します。
createCache()
メソッドを呼び出して、以下のようにクラスター全体でキャッシュを動的に作成します。
Cache<String, String> myCache = manager.administration().createCache("myCache", "myTemplate");
上記の操作では、後でクラスターに参加するすべてのノードにキャッシュが自動的に作成されます。
createCache()
メソッドを使用して作成するキャッシュは、デフォルトでは一時的です。クラスター全体がシャットダウンした場合、再起動時にキャッシュが自動的に再作成されることはありません。
PERMANENT フラグを使用して、以下のようにキャッシュが再起動後も存続できるようにします。
Cache<String, String> myCache = manager.administration().withFlags(AdminFlag.PERMANENT).createCache("myCache", "myTemplate");
PERMANENT フラグを有効にするには、グローバルの状態を有効にし、設定ストレージプロバイダーを設定する必要があります。
設定ストレージプロバイダーの詳細は、GlobalStateConfigurationBuilder#configurationStorage() を参照してください。