EhCache文档说:
如果实现并注册CacheEventListener以接收元素已过期,则可以看到在尝试获取过期元素时触发事件,但不会在'timeToIdleSeconds'之后触发。
是否有可能在过期后强制删除过期的元素? 因为在我的情况下,在这之后,没有人会试图再次获得它。
谢谢。
答案 0 :(得分:6)
我用以下代码完成了它:
cache.evictExpiredElements();
cache.flush();
答案 1 :(得分:0)
在EhCache的第3版及更高版本中,您不能再使用cache.evictExpiredElements()
,并且很可能不应该使用:)
但是如果需要的话,这是我的解决方案:
final Iterator<Entry<String, Bean>> iterator = cache.iterator();
while (iterator.hasNext()) {
iterator.next();
}
这将强制高速缓存获取其中的每个元素,对过期元素返回null并将其删除。另外,我创建了一个CacheEventListener
来赶回驱逐事件以做一些事情。
如前所述,仔细分析您的用例,并确保没有比暴力破解更好的方法。