ehCache驱逐超时和成功刷新

时间:2014-01-21 17:52:17

标签: ehcache

是否可以配置或扩展ehCache以满足以下要求?

  1. 使用生存时间缓存元素。
  2. 当从缓存请求元素并且超过生存时间时,尝试刷新该值,但是如果查找失败则使用先前的值
  3. 其中第一个是相当明显的,但我没有看到满足第二个条件的方法。

1 个答案:

答案 0 :(得分:1)

并非没有覆盖Cache.searchInStoreWith/WithoutStats方法。事实上,它实现的方式是首先从底层Store中逐出元素,然后,如果它被配置,则调用CacheListener,即使那时只传递密钥,而不是值。
当然,可以配置CacheWriter而不是驱逐过期的元素(甚至更新它们),但是如果没有覆盖Chache.get,你的调用仍然会返回null。因此,有可能破解并获得过期的元素
虽然对我来说似乎很容易改变实现,以便不会驱逐过期的元素,而是可以调用CacheLoaded。我打算异步这样做,因为我最好使用陈旧数据,而不是等待SOR响应太久或者如果SOR无法访问则根本没有数据。 似乎类似的东西是implemented以符合JSR 107,但它不区分不存在和过期的元素,如果查找失败 - 过期的元素消失。