【发布时间】:2016-02-02 09:15:03
【问题描述】:
简介
这是关于 infinispan 缓存,但我认为这是一个足够通用的问题。
在我的 infinispan 缓存中,我使用 putIfAbsent 方法将项目输入缓存并使用 remove 方法删除它们。 (jboss doc here)
基本行为
我可以将项目放入我的缓存并使用 id 从缓存中删除项目。但是如果我不显式删除缓存项,infinispan 会在指定的生命周期过后自动删除。
在我的删除方法中,我在删除之前运行了一些自定义代码。 但是当我不调用 remove 方法时,由于提供的寿命到期,infinispan 会删除缓存条目。
在那种自动删除场景中,我无法运行我的自定义代码,因为它发生在幕后。 (由英菲尼斯潘)。那么可能的方法是什么?下面的代码将更有希望地解释这一点。
我相信我已经足够清楚了。请给我一些见解。 谢谢。
void putToCache(String id){
myCache.putIfAbsent(id,value,LIFESPAN_DURATION,timeUnit);
}
void removeFromCache(String id){
//MY CUSTOM CODE - WANT TO RUN THIS IN LIFE SPAN DURATION EXPIRY ALSO
myCache.remove(id);
}
【问题讨论】:
-
Infinispan 似乎实现了一些侦听器类型的功能,可以在删除事件发生时通知您的方法 - 请参阅 docs.jboss.org/infinispan/6.0/apidocs/org/infinispan/…
-
实际上 - 听起来比这更复杂。请参阅infinispan.org/docs/6.0.x/faqs/… - 您无法保证它在超时后过期
-
由于驱逐只能保证在驱逐超时过去之后的某个时间发生,因此决定不提供回调比在稍后提供回调更令人惊讶。我只是想澄清一下。我并不关心实际的删除时间。我想要的是当它发生时的通知。天气它准时或之后发生。你觉得有可能吗。驱逐侦听器是否可以完成工作@disco
标签: java caching jboss infinispan