2012-11-02 51 views
1

我正在使用ehcache來緩存數據,通常是24h過期時間。我想在元素到期時採取元素單獨操作。所以我neee元素內容。我註冊了一個CacheEventListener,以便在元素過期的情況下獲得通知(notifyElementExpired)。不幸的是,在通知時間,只有關鍵是已知的 - 內容已被丟棄,這是一種痛苦!ehcache - 任何訪問過期元素內容的解決方案?

任何在到期時間訪問元素內容的解決方案?

回答

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; 
    } 
} 
0

my answer到類似的問題。如果結果爲true,您可以在isExpired方法中附加一些代碼並採取相應措施。

是的,這可能不是最乾淨的方法,但它應該工作。