10.2. デフォルトキャッシュの使用
10.2.1. キャッシュのデータ追加および削除 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Red Hat JBoss Data Grid は、キャッシュに格納されたデータにアクセスして変更を行うため、提案されている JSR-107 API と似たインターフェースを提供します。
次の手順は、DefaultCacheQuickstart.java ファイルに入力された各行が何を実行するかを定義する例になります。
手順10.2 キャッシュのデータ追加および削除
- エントリーを追加し、key と value を希望のキーと値に置き換えます。
cache.put("key", "value");cache.put("key", "value");Copy to Clipboard Copied! Toggle word wrap Toggle overflow - キャッシュにエントリーが存在することを確認します。
assertEquals(1, cache.size()); assertTrue(cache.containsKey("key"));assertEquals(1, cache.size()); assertTrue(cache.containsKey("key"));Copy to Clipboard Copied! Toggle word wrap Toggle overflow - キャッシュからエントリーを削除します。
Object v = cache.remove("key");Object v = cache.remove("key");Copy to Clipboard Copied! Toggle word wrap Toggle overflow - エントリーがキャッシュに存在しないことを確認します。
assertEquals("value", v); assertTrue(cache.isEmpty());assertEquals("value", v); assertTrue(cache.isEmpty());Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.2.2. キー値の追加と置換 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Red Hat JBoss Data Grid はスレッドセーフなデータ構造を提供します。
次の手順は、
DefaultCacheQuickstart.java ファイルに入力された各行が何を実行するかを定義する例になります。
手順10.3 キー値の追加と置換
valueをキーの値とするエントリーkeyを追加します。cache.put("key", "value");cache.put("key", "value");Copy to Clipboard Copied! Toggle word wrap Toggle overflow
手順10.4 キー値の置換
- 次のコードは、
keyおよびkey2という名前のキーを検索します。検索した 2 つのキーが見つからなかった場合、JBoss Data Grid は指定のキー名と値を持つ 2 つの新しいキーを作成します。cache.putIfAbsent("key", "newValue"); cache.putIfAbsent("key2", "value2");cache.putIfAbsent("key", "newValue"); cache.putIfAbsent("key2", "value2");Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 以下のコードは、格納されたキーの値が格納したい値と同じであることを確認します。
assertEquals(cache.get("key"), "value"); assertEquals(cache.get("key2"), "value2");assertEquals(cache.get("key"), "value"); assertEquals(cache.get("key2"), "value2");Copy to Clipboard Copied! Toggle word wrap Toggle overflow
関連トピック:
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 データライフの調整
- キーの
lifespan値を変更します。cache.put("key", "value", 5, TimeUnit.SECONDS);cache.put("key", "value", 5, TimeUnit.SECONDS);Copy to Clipboard Copied! Toggle word wrap Toggle overflow - キャッシュにキーが含まれていることを確認します。
assertTrue(cache.containsKey("key"));assertTrue(cache.containsKey("key"));Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 割り当てられた
lifespan時間が期限切れになると、キーはキャッシュから削除されます。Thread.sleep(10000); assertFalse(cache.containsKey("key"));Thread.sleep(10000); assertFalse(cache.containsKey("key"));Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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/ ディレクトリーで利用できます。