快取初見 Caffeine的簡單使用

2021-10-10 04:51:57 字數 1580 閱讀 4019

caffeine的簡單使用

使用caffeine載入資料有三種方式:

1、手動載入,也就是構建快取的時候並不載入資料,在需要的時候再去載入並快取

public

static

void

main

(string[

] args)

throws interruptedexception

2、同步載入,構建快取的同時載入快取資料

loadingcache

cache = caffeine.

newbuilder()

.expireafterwrite(2

, timeunit.seconds)

.maximumsize(10

).build

(key -

> key +

"-"+ system.

currenttimemillis()

);// 獲取key,不存在則執行build裡面的方法進行載入

system.out.

println

(cache.

get(

"key1"))

;

3、非同步載入

asyncloadingcache

cache = caffeine.

newbuilder()

.expireafterwrite(2

, timeunit.seconds)

.buildasync

(key -

> key +

"-"+ system.

currenttimemillis()

);// 獲取不存在的key時,會使用buildasync()方法中的演算法計算出value,存入快取

// 非同步獲取的結果存放在completablefuture物件中,可以使用thenaccept()獲取結果

completablefuture

future = cache.

get(

"key1");

future.

thenaccept

(o -

> system.out.

println

(system.

currenttimemillis()

+"-"

+ o));

timeunit.seconds.

sleep(3

);// 不存在則返回null

completablefuture

key2 = cache.

getifpresent

("key2");

system.out.

println

(key2)

;

簡單快取設計

在專案開發中,快取起到至關重要的作用,它能加快程式執行的速度,提高程式效能。按照快取是否備份到磁碟中,可將快取分為兩種 只在記憶體中執行,斷電後消失 與磁碟中的檔案進行交換,下次啟動時能從檔案中恢復。筆者在實際中用到了幾種快取,下面簡單總結。1,堆疊式快取。這種快取適合儲存大小一致的資料塊。初始化時...

快取簡單實現

時間和次數觸發更新 有快取雪崩的情況,更新有更新鎖,還是有點併發問題,不適用於高併發,不嚴謹,簡單實現.有乙個更新就可以了,不要都更新 切記 獲取鎖後在finally裡釋放該鎖!否則將導致無法獲取到鎖來更新快取。如果重新整理時間小於1小時且訪問次數小於100且已經重新整理完成可以直接從快取中取,否則...

Lru快取的簡單實現

最近最少使用演算法設計的map快取 使用linkedhashmap特性,完成當快取超過指定容量時,擠掉最久未使用的資源。具體編寫的工具類如下 一 cache類 繼承linkedhashmap 用於儲存資料 class cache extends linkedhashmap 取得元素耗費儲存空間大小 ...