10.2. デフォルトキャッシュの使用


10.2.1. キャッシュのデータ追加および削除

Red Hat JBoss Data Grid は、キャッシュに格納されたデータにアクセスして変更を行うため、提案されている JSR-107 API と似たインターフェースを提供します。
次の手順は、DefaultCacheQuickstart.java ファイルに入力された各行が何を実行するかを定義する例になります。

手順10.2 キャッシュのデータ追加および削除

  1. エントリーを追加し、keyvalue を希望のキーと値に置き換えます。
    cache.put("key", "value");
    Copy to Clipboard Toggle word wrap
  2. キャッシュにエントリーが存在することを確認します。
    assertEquals(1, cache.size());
    assertTrue(cache.containsKey("key"));
    Copy to Clipboard Toggle word wrap
  3. キャッシュからエントリーを削除します。
    Object v = cache.remove("key");
    Copy to Clipboard Toggle word wrap
  4. エントリーがキャッシュに存在しないことを確認します。
    assertEquals("value", v);
    assertTrue(cache.isEmpty());
    Copy to Clipboard Toggle word wrap

10.2.2. キー値の追加と置換

Red Hat JBoss Data Grid はスレッドセーフなデータ構造を提供します。
次の手順は、DefaultCacheQuickstart.java ファイルに入力された各行が何を実行するかを定義する例になります。

手順10.3 キー値の追加と置換

  • value をキーの値とするエントリー key を追加します。
    cache.put("key", "value");
    Copy to Clipboard Toggle word wrap

手順10.4 キー値の置換

  1. 次のコードは、key および key2 という名前のキーを検索します。検索した 2 つのキーが見つからなかった場合、JBoss Data Grid は指定のキー名と値を持つ 2 つの新しいキーを作成します。
    cache.putIfAbsent("key", "newValue");
    cache.putIfAbsent("key2", "value2");
    Copy to Clipboard Toggle word wrap
  2. 以下のコードは、格納されたキーの値が格納したい値と同じであることを確認します。
    assertEquals(cache.get("key"), "value");
    assertEquals(cache.get("key2"), "value2");
    Copy to Clipboard Toggle word wrap

10.2.3. エントリーの削除

JBoss Data Grid の使用方法に応じて、エントリーを削除する別々のメソッドが使用されます。
ライブラリーモード

以下のメソッドはすべて org.infinispan.Cache とそのサブクラスにあります。

  • remove(key): 単一キーをキャッシュから削除します。
  • removeAsync(key): 単一キーをキャッシュから非同期的に削除します。
  • clear(): マッピングのすべてをキャッシュから削除し、呼び出しが完了するとキャッシュを空にします。
  • clearAsync(): マッピングのすべてをキャッシュから非同期的に削除し、呼び出しが完了するとキャッシュを空にします。
  • cache.evict(key): エントリーをキャッシュから削除し、キャッシュストアが定義されている場合はエントリーをキャッシュストアに移動します。キャッシュストアが定義されていない場合、エントリーはキャッシュから削除され、失われます。

リモートクライアントサーバーモード

以下のメソッドはすべて org.infinispan.client.hotrod.RemoteCache とそのサブクラスにあります。

  • remove(key): 単一キーをキャッシュから削除します。
  • removeAsync(key): 単一キーをキャッシュから非同期的に削除します。
  • clear(): マッピングのすべてをキャッシュから削除し、呼び出しが完了するとキャッシュを空にします。
  • clearAsync(): マッピングのすべてをキャッシュから非同期的に削除し、呼び出しが完了するとキャッシュを空にします。
  • removeWithVersion(key, version): 単一キーの現行バージョンが指定バージョンと一致する場合にのみ、単一キーをキャッシュから削除します。
  • removeWithVersionAsync(key, value): 単一キーの現行バージョンが指定バージョンと一致する場合にのみ、単一キーをキャッシュから非同期的に削除します。

上記メソッドのいずれかについての詳細は、『API ドキュメント』を参照してください。

10.2.4. データセットの配置および取得

AdvancedCache および RemoteCache インターフェースには、既存データの Map の Put または Get のいずれかを一括で実行するためのメソッドが含まれます。通常これらの操作は、複数のトランザクションではなく単一ネットワーク操作が実行されるため、クライアントサーバーモードの場合はとくに個別の操作の同等のシーケンスよりも大幅に効率がよくなります。
一括処理を実行すると、メモリーオーバーヘッドが処理中に高くなります。get または put 処理が単一実行における完全な Map に対応する必要があるためです。
各クラスのメソッドは以下のようになります。
  • AdvancedCache:
    • Map<K,V> getAll(Set<?> keys): 要求されたキーセットに関連する値を含む Map を返します。
    • void putAll(Map<? extends K, ? extends V> map, Metadata metadata): 指定されたマップからこのキャッシュにすべてのマッピングをコピーします。ここでは Metadata のインスタンスが取られ、保存されるエントリーについてのライフスパン、バージョンなどのメタ情報が提供されます。
  • RemoteCache:
    • Map<K,V> getAll(Set<? extends K> keys): 要求されたキーセットに関連する値を含む Map を返します。
    • void putAll(Map<? extends K, ? extends V> map): 指定されたマップからこのキャッシュにすべてのマッピングをコピーします。
    • void putAll(Map<? extends K, ? extends V> map, long lifespan, TimeUnit unit): エントリーの期限が切れる前のライフスパンと共に、指定されたマップからこのキャッシュにすべてのマッピングをコピーします。
    • void putAll(Map<? extends K, ? extends V> map, long lifespan, TimeUnit lifespanUnit, long maxIdleTime, TimeUnit maxIdleTimeUnit): エントリーの期限が切れる前のタイムスパンと、エントリーの期限が切れる前のエントリーのアイドル状態が許容される最大時間と共に、指定されたマップからこのキャッシュにすべてのマッピングをコピーします。

10.2.5. データライフの調整

デフォルトでは、Red Hat JBoss Data Grid のエントリーは期限なし (immortal) ですが、この設定は変更できます。
次の手順は、DefaultCacheQuickstart.java ファイルに入力された各行が何を実行するかを定義する例になります。

手順10.5 データライフの調整

  1. キーの lifespan 値を変更します。
    cache.put("key", "value", 5, TimeUnit.SECONDS);
    Copy to Clipboard Toggle word wrap
  2. キャッシュにキーが含まれていることを確認します。
    assertTrue(cache.containsKey("key"));
    Copy to Clipboard Toggle word wrap
  3. 割り当てられた lifespan 時間が期限切れになると、キーはキャッシュから削除されます。
    Thread.sleep(10000);
    assertFalse(cache.containsKey("key"));
    Copy to Clipboard Toggle word wrap

10.2.6. デフォルトのデータ期限

デフォルトでは、新規に作成されたエントリーにはライフスパンや最大アイドル時間値セットがありません。これらの 2 つの値がない場合、データエントリーは永久に期限切れにならないため、期限なし (immortal) データと呼ばれます。

10.2.7. XML を用いた名前付きキャッシュの登録

プログラムを使用せずに、名前付きキャッシュを宣言的に (XML を使用) 設定するには、infinispan.xml ファイルを設定します。
サンプルの infinispan.xml ファイルは、secure-embedded-cache/src/main/resources/ フォルダー内の https://github.com/jboss-developer/jboss-jdg-quickstarts/ にあり、完全スキーマは 『Red Hat JBoss Data Grid Library』 ディストリビューションの docs/schema/ ディレクトリーで利用できます。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat