【问题标题】:Refresh expiration time of entry in Infinispan on get在获取时刷新 Infinispan 中条目的过期时间
【发布时间】:2018-01-25 01:44:49
【问题描述】:

我一直在 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 中可以使用某种配置来进行刷新?

提前致谢

【问题讨论】:

  • TTL 不是 Infinispan 的标准术语。你指的是驱逐还是到期?
  • 过期..我已经更新了问题。

标签: java caching infinispan cache-invalidation


【解决方案1】:

您可以按照 [1] 中的说明启用最大空闲到期时间。此外,您可能正在寻找的方法是 [2],它需要生命周期和最大空闲到期时间。您可以传递 -1 来表示不用于过期的值。

此外,在集群缓存中使用 max idle 时应小心,因为不能保证其他节点会更新其空闲访问时间(如果您读取的是本地的)。

[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-

【讨论】:

  • 方法 [2] 似乎很有用,但我需要将两者结合起来。除非我将寿命设置为 -1,否则 maxIdleTime 有点没用,因为当访问一个条目时,寿命的“倒计时”不会重置。
  • 算了...使用 lifespan 为 -1 并设置 maxIdleTime 正是我所要求的。谢谢!
猜你喜欢
  • 2015-02-28
  • 2022-11-29
  • 2016-02-04
  • 1970-01-01
  • 1970-01-01
  • 2014-02-23
  • 2022-07-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多