假设缓存中的对象需要被驱逐。但是,应该计算新值并将其放入缓存中,而不是驱逐。重要的是,应该使用旧值,直到生成新值以确保没有锁定。可以为这种行为配置Ehcache吗?
答案 0 :(得分:1)
假设需要驱逐缓存中的对象。
由于容量限制而导致缓存条目被驱逐,并且因为最近没有请求(命中)缓存条目。需要释放资源,不再知道关于条目的任何信息。当再次请求相应的密钥时,需要再次计算该值,并且您无法隐藏额外的延迟。
缓存条目可能会过期,例如因为有时间配置了实时时间跨度。到期可能会发生,而该条目有很多传入请求。当然,在这种情况下,您可能不希望条目从缓存中删除,您只需要刷新该值。
过期时自动刷新值称为提前刷新或后台刷新。答案就在这里:Refreshing Caches while under load with Spring/EHCache
答案 1 :(得分:0)
我不确定你的意思"需要被驱逐"。正常的Ehcache流程如下:
不涉及锁定。获取条目的任何内容都将直接获取旧值或新值而无需等待。除非您使用的是装载机。