EhCache文档说:
如果您实现并注册了一个CacheEventListener来接收元素过期,那么当您尝试获取一个过期的元素时,您可以看到事件被触发,而不是在“timeToIdleSecond”之后。
是否可以在过期元素过期后强制删除该元素?因为在我的情况下,在这一次之后,没有人会试图再次得到它。
谢谢。
发布于 2013-12-06 13:59:30
我是用以下代码完成的:
cache.evictExpiredElements();
cache.flush();
发布于 2019-02-01 14:18:09
在EhCache的第3版及以上版本中,您不能再使用cache.evictExpiredElements()
了,很可能您不应该:)
但如果你必须的话,这是我的解决方案:
final Iterator<Entry<String, Bean>> iterator = cache.iterator();
while (iterator.hasNext()) {
iterator.next();
}
这将强制缓存获取其中的每个元素,返回过期元素的null并删除它们。此外,我还创建了一个CacheEventListener
来捕捉驱逐事件来做一些事情。
如前所述,仔细分析你的使用情况,确保没有比暴力更好的方法了。
https://stackoverflow.com/questions/18660676
复制相似问题