我正在使用ehcache來緩存數據,通常是24h過期時間。我想在元素到期時採取元素單獨操作。所以我neee元素內容。我註冊了一個CacheEventListener,以便在元素過期的情況下獲得通知(notifyElementExpired)。不幸的是,在通知時間,只有關鍵是已知的 - 內容已被丟棄,這是一種痛苦!ehcache - 任何訪問過期元素內容的解決方案?
任何在到期時間訪問元素內容的解決方案?
我正在使用ehcache來緩存數據,通常是24h過期時間。我想在元素到期時採取元素單獨操作。所以我neee元素內容。我註冊了一個CacheEventListener,以便在元素過期的情況下獲得通知(notifyElementExpired)。不幸的是,在通知時間,只有關鍵是已知的 - 內容已被丟棄,這是一種痛苦!ehcache - 任何訪問過期元素內容的解決方案?
任何在到期時間訪問元素內容的解決方案?
您可以創建自定義驅逐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;
}
}
看my answer到類似的問題。如果結果爲true
,您可以在isExpired
方法中附加一些代碼並採取相應措施。
是的,這可能不是最乾淨的方法,但它應該工作。