有時我們需要在快取被移除時得到這個通知,並做一些額外處理。這時removallistener就派上用場了。
removallistener removallistener =
newremovallistener
()};
cacheloader loader =
newcacheloader
()};
loadingcache cache =
cachebuilder.
newbuilder()
.removallistener
(removallistener)
.expireafterwrite(10
,milliseconds).
ticker
(ticker)
.build
(loader)
;
原理
com.google.common.cache.localcache
//構建佇列
final queuev>> removalnotificationqueue
=(removallistener == nulllistener.
instance
)? localcache.
v>>
discardingqueue()
:new
concurrentlinkedqueue
v>>()
;//入隊過程,在節點不存在、節點已過期、快取clear等操作時呼叫
com.google.common.cache.localcache.segment#enqueuenotification
//清理佇列過程,在讀寫操作最後的cleanup方法中呼叫
com.google.common.cache.localcache#processpendingnotifications
guava實現本地快取
private staticloadingcachecache cachebuilder的建構函式是私有的,只能通過其靜態方法newbuilder 來獲得cachebuilder的例項 cachebuilder.newbuilder 設定併發級別為8,併發級別是指可以同時寫快取的執行緒數 concu...
Guava快取的使用
適用於 你願意消耗一些記憶體空間來提公升速度。你預料到某些鍵會被查詢一次以上。快取中存放的資料總量不會超出記憶體容量。cacheloader方式 這種方式的返回值不能為null,會報異常 這種方式使用get方法來獲取快取的值 使用put賦值快取,put裡面傳入的是快取的key和入參,value值是l...
檔案快取原理
3,效能分析 快取之所以能提高效能,是通過本地磁碟空間換網路訪問速度和資料庫伺服器訪問時間的結果。a 本機讀寫時間 b 本機占用空間 c 網路傳輸時間 d 資料庫伺服器磁碟時間 可以估算到,如果資料庫與應用程式存在於一台機器時,主要是 a 與 d 的比較,效果可能並不明顯,甚至還要糟一點。因為資料庫...