1

我一直在阅读有关 infinispan ... 我只需要使用普通的香草缓存,没有集群,没有二级休眠缓存。

我知道过期后,缓存中的对象将被销毁,我不明白的是如何在这些对象被销毁之前刷新它们。我检查了事件,但没有看到类似的情况。

我的目标是拥有一个在给定时间内保存 JPA 结果查询的 Map,然后不时刷新结果。此缓存是只读的,不需要钝化或存储条目。

那么,如何在缓存过期之前将新值放入缓存中呢?我猜 infinispan 应该提供一种方法来做到这一点,还是我错过了什么?也许这个逻辑应该用EJB中的@Scheduler计时器来实现。@Singleton

4

2 回答 2

2

如果您不希望缓存中的内容永远过期,请为缓存设置负的timeToLive,它们将永远保留。或者,如果您需要某些东西只有在 5 秒内未使用时才过期,则将maxIdle设置为 5 秒。在该键的每次读取(cache.get())时,maxIdle开始时间都会被重置,因此只要足够频繁地使用它们,它们就永远不会离开缓存。

于 2013-02-12T11:32:53.893 回答
1

我对缓存有一个不好的想法。

缓存项有一个过期时间,因此要检查给定实体是否存在,如果不存在则表示它已过期,因此是时候再次加载该给定值了。所以不需要实现定时器。此外,当给定项目过期时,缓存将“自行清除”。

于 2013-02-12T12:11:35.070 回答