ehcache - 访问过期元素内容的任何解决方案?

时间:2012-11-02 08:54:42

标签: java ehcache

我使用ehcache缓存数据,通常是24h的到期时间。我想在元素到期时采取元素个体操作。因此,我需要元素内容。我注册了一个CacheEventListener,以便在元素到期时获得通知(notifyElementExpired)。不幸的是,在通知时间只知道密钥 - 内容已被丢弃,这有点痛苦!

在到期时访问元素内容的任何解决方案?

2 个答案:

答案 0 :(得分: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;
    }
}

答案 1 :(得分:0)

查看my answer类似的问题。您可以在isExpired方法中使用某些代码,并在结果为true时采取相应措施。

是的,这可能不是最干净的方法,但应该有效。