3.2. エビクション設定


Data Grid 8 は、以前のバージョンと比較して、エビクション設定を簡素化します。ただし、エビクション設定は、データグリッドのさまざまなバージョン間で多数の変更が加えられているため、移行が簡単ではない可能性があります。

注記

Data Grid 7.2 以降、memory 要素が設定内の eviction 要素に置き換わります。このセクションでは、memory 要素のみを使用したエビクション設定について説明します。eviction 要素を使用する設定の移行については、Data Grid 7.2 のドキュメントを参照してください。

3.2.1. ストレージタイプ

Data Grid では、次のオプションを使用して、エントリーをメモリーに保存する方法を制御できます。

  • オブジェクトを JVM ヒープメモリーに格納します。
  • バイトをネイティブメモリー (オフヒープ) に格納します。
  • バイトを JVM ヒープメモリーに格納します。
Data Grid 8 の変更

以前の 7.x バージョンおよび 8.0 では、objectbinary、および off-heap 要素を使用してストレージタイプを設定していました。

Data Grid 8.1 以降では、storage 属性を使用して、オブジェクトを JVM ヒープメモリーに格納するか、バイトとしてオフヒープメモリーに格納します。

JVM ヒープメモリーにバイトを格納するには、encoding 要素を使用して、データのバイナリーストレージ形式を指定します。

Data Grid 7.xData Grid 8

<memory><object /></memory>

<memory />

<memory><off-heap /></memory>

<memory storage="OFF_HEAP" />

<memory><binary /></memory>

<encoding media-type="…​" />

Data Grid 8 のオブジェクトストレージ

デフォルトでは、Data Grid 8.1 はオブジェクトストレージ (JVM ヒープ) を使用します。

<distributed-cache>
   <memory />
</distributed-cache>

storage="HEAP" を明示的に設定して、データをオブジェクトとして JVM ヒープメモリーに格納することもできます。

<distributed-cache>
   <memory storage="HEAP" />
</distributed-cache>
Data Grid 8 のオフヒープストレージ

データをバイトとしてネイティブメモリーに保存するには、storage 属性の値として "OFF_HEAP" を設定します。

<distributed-cache>
   <memory storage="OFF_HEAP" />
</distributed-cache>
オフヒープアドレス数

以前のバージョンでは、offheapaddress-count 属性を使用すると、衝突を回避するためにハッシュマップで使用可能なポインターの数を指定できます。Data Grid 8.1 では、address-count は使用されなくなり、オフヒープメモリーは衝突を回避するために動的にサイズ変更されます。

Data Grid 8 のバイナリーストレージ

encording 要素を使用して、キャッシュエントリーのバイナリーストレージ形式を指定します。

<distributed-cache>
   <!--Configure MediaType for entries with binary formats.-->
   <encoding media-type="application/x-protostream"/>
   <memory ... />
</distributed-cache>
注記

この変更の結果、Data Grid は、byte[] と混合されたプリミティブと String を格納しなくなり、byte[] のみを格納します。

3.2.2. エビクションしきい値

エビクションを使用すると、コンテナーが設定されたしきい値より大きくなったときにエントリーを削除することで、Data Grid がデータコンテナーのサイズを制御できます。

Data Grid 7. x および 8.0 では、キャッシュ内のエントリーの最大制限を定義する 2 つのエビクションタイプを指定します。

  • COUNT は、キャッシュ内のエントリーの数を測定します。
  • MEMORY は、キャッシュ内のすべてのエントリーが占めるメモリーの量を測定します。

設定した設定に応じて、メモリーの数または合計量のいずれかが最大値を超えると、Data Grid は未使用のエントリーを削除します。

Data Grid 7.x および 8.0 も長いようなデータコンテナーのサイズを規定する size 属性を使用します。設定するストレージの種類に応じて、エントリーの数またはメモリーの量が size 属性の値を超えると、エビクションが発生します。

Data Grid 8.1 では、size 属性は COUNT および MEMORY とともに非推奨になりました。代わりに、次の 2 つの方法のいずれかでデータコンテナーの最大サイズを設定します。

  • max-count 属性を持つエントリーの総数。
  • max-size 属性を持つメモリーの最大量 (バイト単位)。
エントリーの総数に基づくエビクション
<distributed-cache>
   <memory max-count="..." />
</distributed-cache>
最大メモリー量に基づくエビクション
<distributed-cache>
   <memory max-size="..." />
</distributed-cache>

3.2.3. エビクションストラテジー

エビクション戦略は、Data Grid がエビクションを実行する方法を制御します。

Data Grid 7.x および 8.0 では、strategy 属性を使用して次のエビクション戦略のいずれかを設定できます。

ストラテジー説明

NONE

Data Grid はエントリーを削除しません。これは、エビクションを設定しない限り、デフォルト設定です。

REMOVE

Data Grid は、キャッシュが設定されたサイズを超えないように、メモリーからエントリーを削除します。これは、エビクションを設定するときのデフォルト設定です。

MANUAL

Data Grid は削除を実行しません。削除は、evict() メソッドを Cache API から呼び出すことによって手動で行われます。

EXCEPTION

Data Grid は、設定されたサイズを超える場合、キャッシュに新しいエントリーを書き込みません。キャッシュに新しいエントリーを書き込む代わりに、Data Grid は ContainerFullException 出力します。

Data Grid 8.1 では、以前のバージョンと同じ戦略を使用できます。ただし、strategy 属性は when-full 属性に置き換えられます。

<distributed-cache>
   <memory when-full="<eviction_strategy>" />
</distributed-cache>
エビクションアルゴリズム

Data Grid 7.2 では、エビクションアルゴリズムを設定する機能は、Low Inter-Reference Recency Set (LIRS) とともに非推奨になりました。

バージョン 7.2 以降、Data Grid には、TinyLFU と呼ばれる Least Frequently Used (LFU) キャッシュ置換アルゴリズムのバリエーションを実装する Caffeine キャッシングライブラリーが含まれています。オフヒープストレージの場合、Data Grid は LeastRecent Used (LRU) アルゴリズムのカスタム実装を使用します。

3.2.4. エビクション設定の比較

異なる Data Grid バージョン間でエビクション設定を比較します。

オブジェクトストレージとエントリー数の排除
7.2 から 8.0
<memory>
  <object size="1000000" eviction="COUNT" strategy="REMOVE"/>
</memory>
8.1
<memory max-count="1MB" when-full="REMOVE"/>
オブジェクトストレージとメモリー量の排除
7.2 から 8.0
<memory>
  <object size="1000000" eviction="MEMORY" strategy="MANUAL"/>
</memory>
8.1
<memory max-size="1MB" when-full="MANUAL"/>
バイナリーストレージとエントリー数の排除
7.2 から 8.0
<memory>
  <binary size="500000000" eviction="MEMORY" strategy="EXCEPTION"/>
</memory>
8.1
<cache>
   <encoding media-type="application/x-protostream"/>
   <memory max-size="500 MB" when-full="EXCEPTION"/>
</cache>
バイナリーストレージとメモリー量の排除
7.2 から 8.0
<memory>
  <binary size="500000000" eviction="COUNT" strategy="MANUAL"/>
</memory>
8.1
<memory max-count="500 MB" when-full="MANUAL"/>
オフヒープストレージとエントリー数の排除
7.2 から 8.0
<memory>
  <off-heap size="10000000" eviction="COUNT"/>
</memory>
8.1
<memory storage="OFF_HEAP" max-count="10MB"/>
オフヒープストレージとメモリー量の排除
7.2 から 8.0
<memory>
  <off-heap size="1000000000" eviction="MEMORY"/>
</memory>
8.1
<memory storage="OFF_HEAP" max-size="1GB"/>
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.