如何配置Ehcache重新计算密钥而不是驱逐?

时间:2017-01-20 12:21:27

标签: java caching ehcache

假设缓存中的对象需要被驱逐。但是,应该计算新值并将其放入缓存中,而不是驱逐。重要的是,应该使用旧值,直到生成新值以确保没有锁定。可以为这种行为配置Ehcache吗?

2 个答案:

答案 0 :(得分:1)

  

假设需要驱逐缓存中的对象。

由于容量限制而导致缓存条目被驱逐,并且因为最近没有请求(命中)缓存条目。需要释放资源,不再知道关于条目的任何信息。当再次请求相应的密钥时,需要再次计算该值,并且您无法隐藏额外的延迟。

缓存条目可能会过期,例如因为有时间配置了实时时间跨度。到期可能会发生,而该条目有很多传入请求。当然,在这种情况下,您可能不希望条目从缓存中删除,您只需要刷新该值。

过期时自动刷新值称为提前刷新后台刷新。答案就在这里:Refreshing Caches while under load with Spring/EHCache

答案 1 :(得分:0)

我不确定你的意思"需要被驱逐"。正常的Ehcache流程如下:

  1. 在缓存中设置条目
  2. 获得此项目的内容
  3. 该条目现已过时,因此应用程序设置了新值
  4. 获得此条目的内容(使用新值)
  5. 不涉及锁定。获取条目的任何内容都将直接获取旧值或新值而无需等待。除非您使用的是装载机。