Guava Cache快取工具

2021-09-10 14:17:00 字數 2736 閱讀 2227

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,可以修改 刪除鍵值,設定...