Javaでキャッシュを実現していますが、解決すべき最後の問題があります:要素の削除をどのように処理するのですか?
要素はディスクに保存されます。各要素には有効期間 (有効期限) とサイズがあります。私のキャッシュには、保存できる要素の最大サイズと最大数があります。
要素の削除を実行する 3 つの方法を想像しました。
- 新しい要素をキャッシュに挿入すると、スケジュールされたスレッド(各要素に 1 つ) が有効期限に開始するように構成されます (要素自体を削除するため)。
- X 分ごとにスレッドを実行して、どの要素が削除される可能性があるか (およびそれらを削除するか) を確認します。
- 制限 (サイズまたは数) に達すると、最も古い要素が削除されます (または要素をランダムに (より速く) 削除します)。
3 番目のポイントについて、このポリシーを使用すると、キャッシュは期限切れの要素も格納し続けます。明らかに、これらのいずれかが必要な場合、要素がまだ有効かどうかをチェックするために制御が実行されます。
についてどう思いますか?キャッシュを管理するときの一般的な動作は何ですか? 他の解決策はありますか?
PS Android 用にこのキャッシュを開発していますが、これはそれほど重要ではないと思います。