6.2. ローカルモード
マップの代わりに Red Hat JBoss Data Grid のローカルモードを使用すると、多くの利点があります。
簡単なマップでは提供されない次のような機能をキャッシュが提供します。
- データを永続化するライトスルーおよびライトビハインドキャッシュ。
- Java 仮想マシン (JVM) がメモリー不足にならないようにするためのエントリーエビクション。
- 定義された期間後に期限切れになるエントリーのサポート。
JBoss Data Grid は、楽観的および非観的ロックなどの技術を使用してロックの取得を管理する、高パフォーマンスで読み取りをベースとするデータコンテナーを中心に構築されます。
また、JBoss Data Grid は CAS (Compare and Swap) アルゴリズムやその他のロックフリーアルゴリズムも使用するため、スループットの高いマルチ CPU 環境やマルチコア環境を実現します。さらに、JBoss Data Grid のキャッシュ API は JDK の
ConcurrentMap
を拡張するため、マップから JBoss Data Grid への移行プロセスが簡単になります。
6.2.1. ローカルモードの設定 (リモートクライアントサーバーモード)
ローカルキャッシュはすべてのキャッシュコンテナーに追加することができます。以下の例は、
local-cache
要素を追加する方法について説明しています。
手順6.2 local-cache
要素
local-cache
要素は次のパラメーターを使用して、キャッシュコンテナーと共に使用されるローカルキャッシュに関する情報を指定します。
ローカルキャッシュ名の追加
name
パラメーターは使用するローカルキャッシュの名前を指定します。<cache-container name="local" default-cache="default" statistics="true"> <local-cache name="default" >
キャッシュコンテナーの開始モードを設定します。
start
パラメーターはキャッシュコンテナーが起動する時を示します (要求時にレイジーに起動するか、またはサーバー起動時に「すぐに (eargerly)」起動するかなど)。このパラメーターの有効な値はEAGER
とLAZY
です。<cache-container name="local" default-cache="default" statistics="true"> <local-cache name="default" start="EAGER" >
バッチ処理の設定
batching
パラメーターは、ローカルキャッシュに対してバッチ処理が有効であるかを指定します。<cache-container name="local" default-cache="default" statistics="true"> <local-cache name="default" start="EAGER" batching="false" >
キャッシュごとの統計
statistics
がコンテナーレベルで有効にされている場合、statistics
属性をfalse
に設定することにより、キャッシュごとの統計は、モニタリングを必要としないキャッシュについては選択的に無効にすることができます。<cache-container name="local" default-cache="default" statistics="true"> <local-cache name="default" start="EAGER" batching="false" statistics="true">
インデックス化のタイプの指定
indexing
パラメーターはローカルキャッシュに使用されるインデックス化のタイプを指定します。このパラメーターの有効な値はNONE
、LOCAL
、およびALL
です。<cache-container name="local" default-cache="default" statistics="true"> <local-cache name="default" start="EAGER" batching="false" statistics="true"> <indexing index="NONE"> <property name="default.directory_provider">ram</property> </indexing> </local-cache>
この代わりに、引数のないコンストラクターで
DefaultCacheManager
を作成することもできます。どちらの方法でも、ローカルのデフォルトキャッシュが作成されます。
ローカルキャッシュとクラスター化されたキャッシュは同じキャッシュコンテナーで共存できますが、コンテナーに
<transport/>
がない場合はローカルキャッシュのみ格納できます。例で使用されたコンテナーには <transport/>
がないため、ローカルキャッシュのみを格納できます。
キャッシュインターフェースは
ConcurrentMap
を拡張し、複数のキャッシュシステムと互換性があります。