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

How configure Ehcache for recalculation key instead of eviction?

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

Let say that object in the cache need to be evicted.

由于容量限制以及最近未请求(命中)缓存条目,缓存条目可能被逐出。需要释放资源,关于该条目的任何信息都不再为人所知。当再次请求相应的密钥时,需要重新计算该值,并且您无法隐藏额外的延迟。

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

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

我不确定 "needs to be evicted" 是什么意思。正常的 Ehcache 流程如下:

  1. 在缓存中设置一个条目
  2. 获得此条目的事物
  3. 该条目现已过时,因此应用程序设置了新值
  4. 获取此条目的事物(具有新值)

不涉及锁定。任何获得条目的东西都将直接获得旧值或新值而无需等待。除非你使用加载程序。