如何在到期后重新填充缓存?

时间:2013-02-12 01:01:15

标签: java-ee caching jboss7.x infinispan

我一直在阅读infinispan ...我需要使用普通的vanilla缓存,没有集群,没有辅助hibernate缓存。

我知道在到期后,Cache中的对象将被销毁,我不明白的是如何在它们被销毁之前刷新这些对象。我查看了这些事件,我没有看到这样的事情。

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

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

2 个答案:

答案 0 :(得分:2)

如果您不希望缓存中的内容过期,则为缓存设置负 timeToLive ,它们将永远保留。 或者,如果您需要某些东西,只有在它们没有用于例如5秒,然后将 maxIdle 设置为5秒。在该密钥的每次读取( cache.get())上, maxIdle 的启动时间都会被重置,因此只要频繁使用它们,事情就永远不会从缓存中消失

答案 1 :(得分:1)

我对Cache有一个不好的看法。

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