1

私は ehcache を使用してデータをキャッシュしています。通常は 24 時間の有効期限です。要素の有効期限が切れたときに、要素の個々のアクションを実行したいと考えています。したがって、要素のコンテンツが必要です。要素の有効期限が切れた場合に通知 (notifyElementExpired) を受け取るために、CacheEventListener を登録しました。残念ながら、通知の時点ではキーしかわかっていません。コンテンツは既に破棄されており、これはちょっと面倒です!

有効期限時に要素のコンテンツにアクセスするソリューションはありますか?

4

2 に答える 2

1

Policy使用する実際のポリシーにすべての呼び出しを委任するカスタム エビクションを作成できます。selectedBasedOnPolicy実装では、アクションを指定できるメソッドをオーバーライドする必要があります。

class MyEvictionPolicy extends LruPolicy { // you can subclass FifoPolicy or LfuPolicy here
    @Override
    public Element selectedBasedOnPolicy(Element[] sampledElements, Element justAdded) {
        Element candidate = super.selectedBasedOnPolicy(sampledElements, justAdded);
        if (candidate.isExpired()) {
            // perform your action here
        }
        return candidate;
    }
}
于 2012-12-20T21:04:16.003 に答える
0

同様の質問に対する私の回答を見てください。メソッド内のコードに固執しisExpired、結果がtrue.

はい、これはおそらく最もクリーンなアプローチではありませんが、うまくいくはずです。

于 2012-12-20T21:09:59.147 に答える