簡體   English   中英

組合使用Guava Cache CacheLoader.refreshAfterWrite()和.expireAfterAccess()

[英]Guava Cache CacheLoader.refreshAfterWrite() and .expireAfterAccess() in combination

我們使用的是由CacheLoader構建的Guava LoadingCache

我們正在尋找的是一個緩存,它將定期刷新其內容,但如果不再訪問密鑰,也會在給定(更長)的時間范圍后使密鑰到期。

是否可以在同一個CacheLoader上使用.refresAfterWrite(30, TimeUnit.SECONDS).expireAfterAccess(10,TimeUnit.MINUTES)

我的經驗是,由於通過refreshAfterWrite定期重新加載,密鑰永遠不會被驅逐。 文檔讓我對這一點有點不確定。

這應該按照您的意願行事。 CacheBuilder文檔:

當前對條目的第一個陳舊請求發生時,將執行自動刷新。 觸發刷新的請求將對CacheLoader.reload(K,V)進行阻塞調用,並在返回的未來完成時立即返回新值,否則返回舊值。

因此,如果在最后一次寫入后30秒查詢密鑰,它將被刷新; 如果在上次訪問后10分鍾內未查詢,則在沒有刷新的情況下,它將有資格到期。

暫無
暫無

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

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