[英]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.