如何配置 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 流程如下:
- 在缓存中设置一个条目
- 获得此条目的事物
- 该条目现已过时,因此应用程序设置了新值
- 获取此条目的事物(具有新值)
不涉及锁定。任何获得条目的东西都将直接获得旧值或新值而无需等待。除非你使用加载程序。
假设缓存中的对象需要被逐出。但是应该计算一个新值并将其放入缓存中,而不是逐出。重要的是,直到产生新值之前都应该使用旧值,以保证没有锁。可以为这种行为配置 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 流程如下:
- 在缓存中设置一个条目
- 获得此条目的事物
- 该条目现已过时,因此应用程序设置了新值
- 获取此条目的事物(具有新值)
不涉及锁定。任何获得条目的东西都将直接获得旧值或新值而无需等待。除非你使用加载程序。