失効したキャッシュ・データを削除するには、管理上の、イベント・ベースまたはプログラマチックな無効化メカニズムを使用することができます。
スパース・キャッシュおよび 完全キャッシュは、Java Message Service (JMS) などのイベント生成プログラムを使用して 無効化または更新することができます。JMS を使用した無効化は、データベース・トリガーを使用してバックエンドを更新するどのプロセスにも手動で関連付けることができます。サーバー・キャッシュが変更した場合にクライアントに通知できる JMS ObjectGridEventListener プラグインが eXtreme Scale で提供されています。 この通知タイプによって、クライアントが失効データを表示する時間を短縮します。
イベント・ベースの無効化は、一般的には以下の 3 つのコンポーネントで構成されます。
例えば、JMSObjectGridEventListener にはクライアント/サーバー・モデルのオプションがあり、そのイベント・キューは指定された JMS 宛先です。 すべてのサーバー・プロセスがイベント・パブリッシャーです。 トランザクションがコミットすると、サーバーはデータ変更を取得し、それを指定された JMS 宛先にパブリッシュします。 すべてのクライアント・プロセスがイベント・コンシューマーです。 指定された JMS 宛先からデータ変更を受信し、その変更をクライアントのニア・キャッシュに適用します。
詳しくは、クライアント無効化メカニズムの使用可能化を参照してください。
WebSphere eXtreme Scale API により、 Session.beginNoWriteThrough()、ObjectMap.invalidate()、および EntityManager.invalidate() API メソッドを使用したニア・キャッシュおよびサーバー・キャッシュの手動対話が可能になります。クライアントまたはサーバーのプロセスでデータの一部がもう必要ない場合、無効化メソッドを使用して、ニア・キャッシュまたはサーバー・キャッシュからデータを除去できます。beginNoWriteThrough メソッドは、ローダーを呼び出すことなく、ObjectMap または EntityManager 操作をローカル・キャッシュに適用します。クライアントから呼び出された場合のこの操作は、ニア・キャッシュのみに適用されます (リモート・ローダーは呼び出されません)。サーバーで呼び出された場合のこの操作は、ローダーを呼び出すことなく、サーバー・コア・キャッシュのみに適用されます。
他の手法と一緒にプログラマチックな無効化を使用して、データをいつ無効にするかを決定します。 例えば、この無効化メソッドは、イベント・ベースの無効化メカニズムを使用してデータ変更イベントを受信し、API を使用して失効データを無効にします。