我一直在infinispan的文档中搜索,但找不到一种简单的方法来自动获取后刷新条目的过期时间。
今天我正在注册一个侦听器,在@CacheEntryVisited事件中,我将其删除并再次放入其中,但这当然并不理想。
@CacheEntryVisited
public void entryVisited(CacheEntryVisitedEvent<String, String> event) {
cache.remove(event.getKey);
cache.put(event.getKey(), event.getValue(), 10, TimeUnit.SECONDS);
}
有某种配置可以在 CacheManager 中使用来进行此刷新?
提前致谢
您可以启用最大空闲过期时间,如 [1] 中所述。此外,您可能正在寻找的方法就是 [2],它需要生命周期和最大空闲过期时间。您可以为值传递 -1,这意味着不用于过期。
此外,在群集缓存中使用最大空闲时间时应小心,因为不能保证其他节点会更新其空闲访问时间(如果读取是本地的(。
[1] http://infinispan.org/docs/dev/user_guide/user_guide.html#expiration_details
[2] https://docs.jboss.org/infinispan/9.2/apidocs/org/infinispan/commons/api/BasicCache.html#put-K-V-long-java.util.concurrent.TimeUnit-long-java.util.concurrent.TimeUnit-