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 />
<eviction />Copy to Clipboard Copied! Toggle word wrap Toggle overflow エビクションストラテジーの設定
使用するエビクションストラテジーを設定するためにstrategyの値を設定します。使用可能な値は、LRU、UNORDEREDおよびLIRS(またはエビクションが不要な場合はNONE) です。以下は、この手順の例になります。<eviction strategy="LRU" />
<eviction strategy="LRU" />Copy to Clipboard Copied! Toggle word wrap Toggle overflow エビクションに使用する最大サイズの設定
size要素を定義してメモリー内で許可されるエントリーの最大数を設定します。無制限のエントリーを許可するためのデフォルト値は-1です。以下はこの手順について説明しています。<eviction strategy="LRU" size="200" />
<eviction strategy="LRU" size="200" />Copy to Clipboard Copied! Toggle word wrap Toggle overflow
結果
エビクションがターゲットキャッシュ用に設定されます。
2.3.2. エビクションの設定例 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
エビクションは Red Hat JBoss Data Grid でプラグラムを使用するか、または XML ファイルを使用して設定できます。エビクションの設定はキャッシュごとに実行されます。
XML 設定例は以下のようになります。
<eviction strategy="LRU" size="2000"/>
<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>
<local-cache name="local">
<eviction size="10000000000" strategy="LRU" type="MEMORY"/>
</local-cache>
2.3.4. エビクションとパッシベーション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
エントリーの 1 つのコピーがメモリーまたはキャッシュストアに維持されるようにするため、パッシベーションはエビクションと共に使用してください。
通常のキャッシュストアの代わりにパッシベーションを使用する主な理由は、パッシベーションを使用するとエントリーの更新に必要なリソースが少なくなることにあります。パッシベーションではキャッシュストアへの更新が不要になるためです。