我正在使用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
方法中附加一些代码并采取相应措施。
是的,这可能不是最干净的方法,但它应该工作。