Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ehcache-有没有访问过期元素内容的解决方案?_Java_Ehcache - Fatal编程技术网

Java ehcache-有没有访问过期元素内容的解决方案?

Java ehcache-有没有访问过期元素内容的解决方案?,java,ehcache,Java,Ehcache,我使用ehcache来缓存数据,通常是24小时的过期时间。我希望在元素过期时执行元素单独的操作。因此我需要元素内容。我注册了一个CacheEventListener,以便在元素过期时获得通知(notifyElementExpired)。不幸的是,在通知时间只有密钥是已知的-内容已经被丢弃,这是一种痛苦 是否有在过期时访问元素内容的解决方案 您可以创建自定义逐出策略,将所有调用委托给实际使用的策略。在您的实现中,您需要重写selectedBasedOnPolicy方法,您可以在其中指定操作: cl

我使用ehcache来缓存数据,通常是24小时的过期时间。我希望在元素过期时执行元素单独的操作。因此我需要元素内容。我注册了一个CacheEventListener,以便在元素过期时获得通知(notifyElementExpired)。不幸的是,在通知时间只有密钥是已知的-内容已经被丢弃,这是一种痛苦


是否有在过期时访问元素内容的解决方案

您可以创建自定义逐出
策略
,将所有调用委托给实际使用的策略。在您的实现中,您需要重写
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;
    }
}

您可以创建自定义逐出
策略
,将所有调用委托给实际使用的策略。在您的实现中,您需要重写
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;
    }
}
请看一个类似的问题。您可以在
isExpired
方法中插入一些代码,并在结果为
true
时相应地执行操作

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

看看类似的问题。您可以在
isExpired
方法中插入一些代码,并在结果为
true
时相应地执行操作

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