現在ConcurrentHashMap
、アプリケーションで を使用していますが、タイムアウト期間後にエントリを効率的に期限切れにする機能 (expireAfterWrite) を追加し、エントリが削除されるたびに削除リスナーに通知する必要があります。
必要なものを提供できることがわかりましたCacheBuilder
が、キャッシュではなくマップが必要なため、使用するのをためらっています。グアバキャッシュのドキュメントがこれを言っているので、私はこれを言います(マップとキャッシュの違い)
一般に、Guava キャッシング ユーティリティは次の場合に適用できます。
- 速度を向上させるためにいくらかのメモリを費やすことを厭わない。
- キーが複数回クエリされることがあると予想されます。
- 原則として、すべての値がキャッシュからすぐに削除された場合、アプリケーションは機能しますが、重複する作業を削減しようとしています。
具体的には、私のアプリケーションでは 3 番目の箇条書きが適切ではありません。後で(有効期限が切れるまで)取得したい値をマップ/キャッシュに保存しています。また、通常、私のキーは 1 回か 2 回しかクエリされず、キャッシュの利点を確認できる回数は多くありません。つまり、私の要件はある意味でキャッシュではなく、マップに対するものであることがわかります。CacheBuilder をマップとして使用して、expireAfterWrite の値を格納し、removalListener 機能を提供することはまだ良い考えですか? アドバイスを提供できる CacheBuilder 実装の内部について十分に知っている人はいますか?