この章では、Coherence for C++クライアントに関係するニア・キャッシュについて説明します。ニア・キャッシュの概念、その構成、およびバック層との同期を維持する方法の詳細は、『Oracle Coherenceスタート・ガイド』の「ニア・キャッシュ」を参照してください。
Coherence for C++でのニア・キャッシュは、リードスルー/ライトスルー方式を使用してフロント・キャッシュとバック・キャッシュをラップするcoherence::net::NamedCache実装です。バック・キャッシュがObservableCacheインタフェースを実装している場合、ニア・キャッシュはリスニング方針にNone、Present、All、Autoのいずれかを使用して、バック・キャッシュで変更された可能性のあるフロント・キャッシュ・エントリを無効化します。
一般的なニア・キャッシュは、ローカル・キャッシュ(スレッド・セーフで並行性が高く、かつサイズが制限されていて自動的に失効するローカル・キャッシュ)をフロント・キャッシュとして使用し、リモート・キャッシュをバック・キャッシュとして使用するように構成されます。ニア・キャッシュの構成には、2つの子要素を持つnear-schemeが使用されます。1つはローカル(フロント)キャッシュを構成するためのfront-scheme、もう1つはリモート(バック)キャッシュを定義するためのback-schemeです。
ニア・キャッシュは、coherence-cache-configファイルの<near-scheme>要素を使用して構成します。この要素には、ローカル(フロント層)キャッシュを構成するためのfront-schemeと、リモート(バック層)キャッシュを定義するためのback-schemeの2つのサブ要素が要求されます。フロント層には通常、ローカル・キャッシュ(<local-scheme>)を選択しますが、JVMヒープ・ベース以外のキャッシュ(<external-scheme>または<paged-external-scheme>)またはJavaオブジェクトに基づくスキーム(<class-scheme>)も使用できます。
リモート、すなわちバック層のキャッシュは、<back-scheme>要素を使用して記述します。バック層のキャッシュには、分散キャッシュ(<distributed-scheme>)またはリモート・キャッシュ(<remote-cache-scheme>)を定義できます。<remote-cache-scheme>要素を使用すると、現在のクラスタの外部からクラスタ・キャッシュを使用できます。
<near-scheme>のオプションのサブ要素には、フロント層とバック層のオブジェクトの同期を維持する方法を指定する<invalidation-strategy>、およびキャッシュで発生したイベントの通知を受け取るリスナーを指定する<listener>などがあります。
構成例については、「ニア・キャッシュ・コンフィギュレーションのサンプル」を参照してください。ファイルに含まれる各要素の詳細は、<near-scheme>のトピックを参照してください。
すべてのNamedCache実装のインスタンスは、NearCacheを含め、不要になった時点でNamedCache::release()メソッドをコールして明示的に解放し、インスタンスで保持されているリソースをすべて解放する必要があります。
特定のNamedCacheがアプリケーションの継続期間を通して使用される場合、リソースはそのアプリケーションがシャットダウンされたとき、または停止したときにクリーンアップされます。ただし、わずかの間だけ使用される場合は、使い終わった時点でアプリケーションからrelease()メソッドをコールする必要があります。