java - get时刷新Infinispan中条目的过期时间

标签 java caching infinispan cache-invalidation

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

今天我要注册一个监听器,并在 @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-

关于java - get时刷新Infinispan中条目的过期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48434380/

相关文章:

java - 用于计数数组反转的合并排序实现

java - 我可以通过按键为@Cacheable 设置TTL 吗?

java - Java 中的 OHC 缓存

infinispan - 如何查看infinispan缓存的内容?

java - Java 中的 Mutliround Feistel 网络

java - Spring Security 中基于角色的访问拒绝处理 - 如何?

hibernate-search - Infinispan 中的复制超时

java - 如何从 JBoss 外部与 Infinispan 通信?

Java split(),使用包含特定字符的整个单词作为分隔符

javascript - 浏览器使用缓存而不重新验证