1

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

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

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 回答