3. 使用cache
4. cache的特性
public
class
mydata
}
public
class
mydao
catch
(interruptedexception e)
return
newmydata
(key,
"hello world!"
+ key.
hashcode()
);}}
// 資料獲取層物件
mydao mydao =
newmydao()
;// 移除資料的監聽介面 lambda
removallistener
removallistener = notification -
> system.out.
println
("remove -> "
+ notification)
;// 快取載入器,當不存在對應快取時,呼叫load()
cacheloader
cacheloader =
newcacheloader
()};
// 構建cache
loadingcache
cache = cachebuilder.
newbuilder()
.maximumsize
(100
)// 設定快取size上限,當達到最大size後,將刪除最近最少使用的物件(即lru演算法)
.expireafterwrite(10
, timeunit.minutes)
// 設定快取過期時間
.removallistener
(removallistener)
.build
(cacheloader)
;
loadingcache
cache = cachebuilder.
newbuilder()
.maximumweight
(10000l)
// 當所有物件的weight的和超過此值,就開始使用lru策略移除物件
.weigher
(new
weigher
()})
.build
(cacheloader)
;
mydata mydata = cache.
get(
"key");
system.out.
println
("mydata = "
+ mydata)
;
mydata mydata = cache.
get(
"key"
,new
callable
()})
;system.out.
println
("mydata = "
+ mydata)
;
cache.
invalidate
("key"
);
cache.
put(
"key"
,new
mydata
("key"
,"google"))
;
for
(int i =
0; i <
100; i++
)catch
(executionexception e)
}
達到上限size後,會根據lru策略移除快取物件,並呼叫監聽介面
random random =
newrandom()
;for
(int i =
0; i <
100; i++
)catch
(executionexception e)
}
// 構建cache時,需要新增recordstats()
loadingcache
cache = cachebuilder.
newbuilder()
.maximumsize(10
).expireafterwrite(10
, timeunit.minutes)
.removallistener
(removallistener)
.recordstats()
// 啟動統計
.build
(cacheloader);
random random =
newrandom()
;for
(int i =
0; i <
100; i++
)catch
(executionexception e)
}// 列印統計資訊
system.out.
println
("stats = "
+ cache.
stats()
);
guava cache深入了解
以下基於cacheloader方式 1.定時過期 expireafterwrite 2.定時重新整理 refreshafterwrite 過載reload 3.定時非同步重新整理 refreshafterwrite 過載reload 執行緒池 共同點 當key null或expire時,都會加鎖,並...
php 快取工具類 實現網頁快取
php 快取工具類 實現網頁快取 php程式在抵抗大流量訪問的時候動態 往往都是難以招架,所以要引入快取機制,一般情況下有兩種型別快取 一 檔案快取 二 資料查詢結果快取,使用記憶體來實現快取記憶體 本例主要使用檔案快取。主要原理使用快取函式來儲存網頁顯示結果,如果在規定時間裡再次呼叫則可以載入快取...
CacheManager快取管理開源工具
本文主要介紹我的開源專案cachemanager的使用說明和特性 cachemanager可以協助管理我們專案應用中使用的redis memcache快取鍵值對。目前已經實現了對redis的支援,支援的資料型別包括string list set sortedset hash,可以修改 刪除鍵值,設定...