获取时刷新Infinispan条目的过期时间

Refresh expiration time of entry in Infinispan on get

我一直在 infinispan 的文档中搜索,但找不到在获取后自动刷新条目过期时间的简单方法。

今天我注册了一个 Listener,在 @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-