2.3. エビクションの使用
Red Hat JBoss Data Grid では、エビクションはデフォルトでは無効にされています。空の <
eviction
/> 要素を使用して、ストラテジーや最大エントリー数の設定なしにエビクションを有効にすると、次のデフォルト値が使用されます。
- ストラテジー: 指定されたエビクションストラテジーがない場合、
EvictionStrategy.NONE
がデフォルトとみなされます。 - サイズ: 指定された値がない場合、
size
の値は無制限のエントリーを許可する-1
に設定されます。
2.3.1. エビクションの初期化
エビクションを初期化するには、エビクション要素の
size
属性の値をゼロよりも大きい数に設定します。size
に設定された値を調整して、使用する設定に最適な値を探します。size
に設定する値が大きすぎると、Red Hat JBoss Data Grid のメモリーが不足することに注意してください。
以下の手順は、JBoss Data Grid でエビクションを初期化する手順を簡単に説明しています。
手順2.1 エビクションの初期化
エビクションタグの追加
<eviction> タグを次のようにプロジェクトの <cache> タグに追加します。<eviction />
エビクションストラテジーの設定
使用するエビクションストラテジーを設定するためにstrategy
の値を設定します。使用可能な値は、LRU
、UNORDERED
およびLIRS
(またはエビクションが不要な場合はNONE
) です。以下は、この手順の例になります。<eviction strategy="LRU" />
エビクションに使用する最大サイズの設定
size
要素を定義してメモリー内で許可されるエントリーの最大数を設定します。無制限のエントリーを許可するためのデフォルト値は-1
です。以下はこの手順について説明しています。<eviction strategy="LRU" size="200" />
結果
エビクションがターゲットキャッシュ用に設定されます。
2.3.2. エビクションの設定例
エビクションは Red Hat JBoss Data Grid でプラグラムを使用するか、または XML ファイルを使用して設定できます。エビクションの設定はキャッシュごとに実行されます。
XML 設定例は以下のようになります。
<eviction strategy="LRU" size="2000"/>
2.3.3. メモリーベースのエビクションの利用
Red Hat JBoss Data Grid 7 では、メモリーベースのエビクションを導入し、エントリー数ではなくエントリーのメモリー使用に基づくエントリーのエビクションが可能になりました。これはエントリーのサイズが異なる場合にとくに役立ちます。
キー/値の制限
メモリーベースのエビクションでは、プリミティブ、プリミティブラッパー (java.lang.Integer
など)、java.lang.String
インスタンス、またはこれらの値のアレイ
として保存されるキーおよび値のみを使用できます。
この制限により、カスタムクラスが使用される場合
store-as-binary
をキャッシュで有効にする必要があります。またはカスタムクラスのデータをシリアライズし、これをバイトアレイに格納することができます。
ただし互換性モードはバイトアレイへのシリアライズを禁止するため、両者は相互に排他的です。
エビクションストラテジーの制限
メモリーベースのエビクションは、LRU
エビクションストラテジーでのみサポートされます。
メモリーベースのエビクションの有効化
このエビクションメソッドは、以下の例にあるように MEMORY
をエビクションタイプとして定義することによって使用できます。
<local-cache name="local"> <eviction size="10000000000" strategy="LRU" type="MEMORY"/> </local-cache>
2.3.4. エビクションとパッシベーション
エントリーの 1 つのコピーがメモリーまたはキャッシュストアに維持されるようにするため、パッシベーションはエビクションと共に使用してください。
通常のキャッシュストアの代わりにパッシベーションを使用する主な理由は、パッシベーションを使用するとエントリーの更新に必要なリソースが少なくなることにあります。パッシベーションではキャッシュストアへの更新が不要になるためです。