gpt4 book ai didi

java - Guava 加载缓存 : Why use refreshAfterWrite and expireAfterWrite together

转载 作者:搜寻专家 更新时间:2023-10-31 19:36:54 26 4
gpt4 key购买 nike

我阅读了这篇解释 Guava 缓存的文档:CachesExplained .我确实了解 refreshAfterWrite 和 expireAfterWrite 在做什么。但是,文档在解释refreshAfterWrite的同时,也提到了这一点:

因此,例如,您可以在同一缓存上同时指定 refreshAfterWrite 和 expireAfterWrite,这样只要条目符合刷新条件,就不会盲目地重置条目的过期计时器,因此如果条目达到刷新条件后不再查询,允许过期。

这是让我感到困惑的部分。我的理解是,如果想让某个key自动刷新,只需要指定refreshAfterWrite即可。为什么我们甚至想在使用 refreshAfterWrite 时使用 expireAfterWrite?

最佳答案

在某些情况下,您希望缓存的条目具有相关性,因此您设置了刷新持续时间(这可能更容易执行(和异步),而不是在逐出后完全获取,因此不同),但是同时,如果你的缓存是有界的,你会想要驱逐条目,这就是 expireAfterWrite 的目的。通过同时设置它们,您将确保条目在特定时间后被逐出,即使它已被刷新。

另请注意,两者的操作方式不同:

Refreshing is not quite the same as eviction. As specified in LoadingCache.refresh(K), refreshing a key loads a new value for the key, possibly asynchronously. The old value (if any) is still returned while the key is being refreshed, in contrast to eviction, which forces retrievals to wait until the value is loaded anew.

关于java - Guava 加载缓存 : Why use refreshAfterWrite and expireAfterWrite together,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46144341/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com