簡體   English   中英

Guava LoadingCache:為什么一起使用refreshAfterWrite和expireAfterWrite

[英]Guava LoadingCache: Why use refreshAfterWrite and expireAfterWrite together

我閱讀了這篇文章,解釋了Guava Cache: CachesExplained 我確實理解了refreshAfterWrite和expireAfterWrite正在做什么。 但是,在解釋refreshAfterWrite時,該文檔還提到了這一點:

因此,例如,您可以在同一緩存上指定refreshAfterWrite和expireAfterWrite,這樣只要條目有資格進行刷新,條目上的到期計時器就不會被盲目重置,因此如果條目之后沒有查詢條目有資格刷新,允許過期。

這是令我困惑的部分。 根據我的理解,如果您想要自動刷新密鑰,您只需要指定refreshAfterWrite。 為什么我們甚至想在使用refreshAfterWrite時使用expireAfterWrite?

在某些情況下,您希望緩存的條目是相關的,因此您可以設置刷新持續時間(執行(和異步)可能更輕,而不是在驅逐后完全獲取,因此,不同),但同時時間,如果您的緩存有限,您將要逐出條目,這就是expireAfterWrite的用途。 通過設置它們兩者,您將確保在一定時間后逐出一個條目,即使它已被刷新。

另請注意,兩者的運作方式不同:

刷新與驅逐並不完全相同。 正如在LoadingCache.refresh(K)中指定的那樣,刷新密鑰會加載密鑰的新值,可能是異步的。 在刷新密鑰時仍會返回舊值(如果有),這與逐出驅動相反,后者強制檢索等待,直到重新加載該值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM