Javaで有効期限が600秒のLRUキャッシュを実装する必要があります。組み込みのLinkedHashMapクラスを検索して見つけました。サイズが制限を超えた場合、最も古い要素を削除できますが、要素の有効期限はありません。
私が考えることができるのは、要素をキャッシュに入れるときにタイムスタンプを関連付けることです。要素を取得するときは、そのタイムスタンプを確認してください。タイムスタンプが600秒より古い場合、要素をキャッシュから削除し、「not-found」を返します。
より良いアイデアはありますか?組み込みのソリューションまたはベストプラクティスはありますか?ホイールの再発明を避けたいのですが。
Guavaキャッシュを使用するのはどうですか。
それは、すべてのサポートこれらを、
以下の機能の任意の組み合わせを持つLoadingCacheおよびCacheインスタンスのビルダー:
- キャッシュへのエントリの自動読み込み
- 最大サイズを超えたときに、最も最近使用されていないエビクション
- 最後のアクセスまたは最後の書き込み以降に測定された、エントリの時間ベースの有効期限
- 自動的に弱い参照でラップされたキー
- 弱参照またはソフト参照に自動的にラップされた値
- 削除された(または削除された)エントリの通知
- キャッシュアクセス統計の蓄積
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加