1

私は infinispan について読んでいます... プレーンなバニラ キャッシュのみを使用し、クラスタリングも、セカンダリ ハイバネート キャッシュも使用する必要はありません。

有効期限が切れると、キャッシュ内のオブジェクトが破棄されることは理解していますが、破棄される直前にそれらのオブジェクトを更新する方法がわかりません。イベントを確認しましたが、このようなものはありません。

特定の時間の JPA 結果クエリを保持するマップを作成し、時々結果を更新することを目指しています。このキャッシュは読み取り専用であり、エントリを非アクティブ化または保存する必要はありません。

では、有効期限が切れる前に新しい値をキャッシュに入れる方法は? infinispan がこれを行う方法を提供する必要があると思いますか、それとも何か不足していますか? おそらく、このロジックは、 EJB@Scheduler内のタイマーを使用して実装する必要があります。@Singleton

4

2 に答える 2

2

キャッシュ内のものが期限切れにならないようにする場合は、キャッシュに負のtimeToLiveを設定すると、それらは永久に残ります。または、たとえば5秒間使用されていない場合にのみ期限切れにする必要がある場合は、maxIdleを5秒に設定します。そのキーを読み取るたびに(cache.get() )、 maxIdleの開始時間がリセットされるため、十分な頻度で使用されている限り、キャッシュから出力されることはありません。

于 2013-02-12T11:32:53.893 に答える
1

私はキャッシュについて悪い考えを持っていました。

キャッシュ アイテムには有効期限があるため、特定のエンティティが存在するかどうかを確認します。存在しない場合は有効期限が切れていることを意味するため、その特定の値をもう一度読み込む必要があります。したがって、タイマーを実装する必要はありません。さらに、特定のアイテムの有効期限が切れると、キャッシュは「自動的にクリア」されます。

于 2013-02-12T12:11:35.070 に答える