大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專(zhuān)注Java教育14年 全國(guó)咨詢(xún)/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) 學(xué)習(xí)攻略 Java學(xué)習(xí) Java緩存框架教程,Caffeine內(nèi)存緩存框架

Java緩存框架教程,Caffeine內(nèi)存緩存框架

更新時(shí)間:2020-02-11 09:54:11 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽6338次


  Caffeine是一種高性能的緩存庫(kù),是基于Java8的最佳(最優(yōu))緩存框架。


  Cache(緩存),基于GoogleGuava,Caffeine提供一個(gè)內(nèi)存緩存,大大改善了設(shè)計(jì)Guava'scache和ConcurrentLinkedHashMap的體驗(yàn)。


java緩存框架教程,Caffeine內(nèi)存緩存框架


  緩存類(lèi)似于ConcurrentMap,但二者并不完全相同。最基本的區(qū)別是,ConcurrentMap保存添加到其中的所有元素,直到顯式地刪除它們。另一方面,緩存通常配置為自動(dòng)刪除條目,以限制其內(nèi)存占用。在某些情況下,LoadingCache或AsyncLoadingCache可能很有用,因?yàn)樗亲詣?dòng)緩存加載的。


  Caffeine提供了靈活的結(jié)構(gòu)來(lái)創(chuàng)建緩存,并且有以下特性:


  自動(dòng)加載條目到緩存中,可選異步方式


  可以基于大小剔除


  可以設(shè)置過(guò)期時(shí)間,時(shí)間可以從上次訪問(wèn)或上次寫(xiě)入開(kāi)始計(jì)算


  異步刷新


  keys自動(dòng)包裝在弱引用中


  values自動(dòng)包裝在弱引用或軟引用中


  條目剔除通知


  緩存訪問(wèn)統(tǒng)計(jì)


  1.加載/填充


  Caffeine提供以下四種類(lèi)型的加載策略:


  1.1.Manual


java緩存框架教程,Caffeine內(nèi)存緩存框架


  Cache接口可以顯式地控制檢索、更新和刪除條目。


  1.2.Loading


java緩存框架教程,Caffeine內(nèi)存緩存框架


  LoadingCache通過(guò)關(guān)聯(lián)一個(gè)CacheLoader來(lái)構(gòu)建Cache


  通過(guò)LoadingCache的getAll方法,可以批量查詢(xún)


  1.3.Asynchronous(Manual)


java緩存框架教程,Caffeine內(nèi)存緩存框架


  AsyncCache是另一種Cache,它基于Executor計(jì)算條目,并返回一個(gè)CompletableFuture。


  1.4.AsynchronouslyLoading


java緩存框架教程,Caffeine內(nèi)存緩存框架


  AsyncLoadingCache是關(guān)聯(lián)了AsyncCacheLoader的AsyncCache


  2.剔除


  Caffeine提供三種剔除方式:基于大小、基于時(shí)間、基于引用


  2.1.Size-based


java緩存框架教程,Caffeine內(nèi)存緩存框架


  如果緩存的條目數(shù)量不應(yīng)該超過(guò)某個(gè)值,那么可以使用Caffeine.maximumSize(long)。如果超過(guò)這個(gè)值,則會(huì)剔除很久沒(méi)有被訪問(wèn)過(guò)或者不經(jīng)常使用的那個(gè)條目。


  如果,不同的條目有不同的權(quán)重值的話,那么你可以用Caffeine.weigher(Weigher)來(lái)指定一個(gè)權(quán)重函數(shù),并且使用Caffeine.maximumWeight(long)來(lái)設(shè)定最大的權(quán)重值。


  簡(jiǎn)單的來(lái)說(shuō),要么限制緩存條目的數(shù)量,要么限制緩存條目的權(quán)重值,二者取其一。限制數(shù)量很好理解,限制權(quán)重的話首先你得提供一個(gè)函數(shù)來(lái)設(shè)定每個(gè)條目的權(quán)重值是多少,然后才能顯示最大的權(quán)重是多少。


  2.2.Time-based


java緩存框架教程,Caffeine內(nèi)存緩存框架


  expireAfterAccess(long,TimeUnit):最后一次被訪問(wèn)(讀或者寫(xiě))后多久失效


  expireAfterWrite(long,TimeUnit):最后一次被創(chuàng)建或修改后多久失效


  expireAfter(Expiry):創(chuàng)建后多久失效


  建議,主動(dòng)維護(hù)緩存中條目,而不是等到訪問(wèn)的時(shí)候發(fā)現(xiàn)緩存條目已經(jīng)失效了才去重新加載。意思就是,提前加載,定期維護(hù)。


  可以在構(gòu)建的時(shí)候Caffeine.scheduler(Scheduler)來(lái)指定調(diào)度線程


  2.3.Reference-based


java緩存框架教程,Caffeine內(nèi)存緩存框架


  Caffeine.weakKeys()使用弱引用存儲(chǔ)key。如果沒(méi)有強(qiáng)引用這個(gè)key,則允許垃圾回收器回收該條目。注意,這是使用==判斷key的。


  Caffeine.weakValues()使用弱引用存儲(chǔ)value。如果沒(méi)有強(qiáng)引用這個(gè)value,則允許垃圾回收器回收該條目。注意,這是使用==判斷key的。


  Caffeine.softValues()使用軟引用存儲(chǔ)value。


  3.刪除


  術(shù)語(yǔ):


  eviction指受策略影響而被刪除


  invalidation值被調(diào)用者手動(dòng)刪除


  removal值因eviction或invalidation而發(fā)生的一種行為


  3.1.明確地刪除


java緩存框架教程,Caffeine內(nèi)存緩存框架


  3.2.監(jiān)聽(tīng)器


java緩存框架教程,Caffeine內(nèi)存緩存框架


  4.刷新


java緩存框架教程,Caffeine內(nèi)存緩存框架


  通過(guò)LoadingCache.refresh(K)進(jìn)行異步刷新,通過(guò)覆蓋CacheLoader.reload(K,V)可以自定義刷新邏輯


  5.統(tǒng)計(jì)


java緩存框架教程,Caffeine內(nèi)存緩存框架


  使用Caffeine.recordStats(),你可以打開(kāi)統(tǒng)計(jì)功能。Cache.stats()方法會(huì)返回一個(gè)CacheStats對(duì)象,該對(duì)象提供以下統(tǒng)計(jì)信息:


  hitRate():命中率


  evictionCount():被剔除的條目數(shù)量


  averageLoadPenalty():加載新值所花費(fèi)的平均時(shí)間


  6.示例


  終于要說(shuō)到重點(diǎn)了


  一般來(lái)講,用Redis作為一級(jí)話緩存,Caffeine作為二級(jí)緩存


  6.1.示例一:?jiǎn)为?dú)使用


  pom.xml


java緩存框架教程,Caffeine內(nèi)存緩存框架


  config


java緩存框架教程,Caffeine內(nèi)存緩存框架


  service


java緩存框架教程,Caffeine內(nèi)存緩存框架


  補(bǔ)充一點(diǎn):你都用本地緩存了,必定已經(jīng)用了一級(jí)緩存了。一級(jí)緩存無(wú)法達(dá)到預(yù)期的性能,才會(huì)選擇用本地緩存。


  controller


java緩存框架教程,Caffeine內(nèi)存緩存框架


  application.yml


java緩存框架教程,Caffeine內(nèi)存緩存框架


  service


java緩存框架教程,Caffeine內(nèi)存緩存框架


  用注解方便是方便,但是不好控制,還是自定義的好


  7.工程結(jié)構(gòu)


  java緩存框架教程,Caffeine內(nèi)存緩存框架


  完整的pom.xml


java緩存框架教程,Caffeine內(nèi)存緩存框架


       以上就是動(dòng)力節(jié)點(diǎn)Java培訓(xùn)機(jī)構(gòu)小編介紹的“java緩存框架教程,Caffeine內(nèi)存緩存框架”的內(nèi)容,希望對(duì)大家有幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢(xún),有專(zhuān)業(yè)老師隨時(shí)為你服務(wù)。


  相關(guān)內(nèi)容


  深入淺出的Java學(xué)習(xí)路徑,Java練手項(xiàng)目學(xué)習(xí)


  新手Java的三大框架ssh學(xué)習(xí)


  JavaSSH框架教學(xué)視頻


提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)

  • 全國(guó)校區(qū) 2025-04-24 搶座中
  • 全國(guó)校區(qū) 2025-05-15 搶座中
  • 全國(guó)校區(qū) 2025-06-05 搶座中
  • 全國(guó)校區(qū) 2025-06-26 搶座中
免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 日韩一级欧美一级毛片在线 | 国产日韩在线看 | 热久久久久 | 日本欧美三级 | 久久成人精品免费播放 | 国产精品第二页在线播放 | 国产成人毛片精品不卡在线 | 国产精品福利视频一区二区三区 | 欧美黄色网页 | 亚洲欧美国产精品专区久久 | 亚洲图片欧美日韩 | 日韩欧美一区二区三区四区 | 国产亚洲第一精品社区麻豆 | 国产综合色在线视频区色吧图片 | 9久re热视频这里只有精品 | 亚洲国产成人九九综合 | 四虎成人欧美精品在永久在线 | 国产一区中文字幕在线观看 | 亚洲综合色婷婷中文字幕 | 99999久爱视频在线观看 | 狠狠88综合久久久久综合网 | 日日噜噜爽爽狠狠视频 | 国产精品久久久久久久久齐齐 | 久久国产精品亚洲77777 | 加勒比精品久久一区二区三区 | 欧美香蕉爽爽人人爽观看猫咪 | 亚洲黄区 | 在线播放人成午夜免费视频 | 久久精品夜夜夜夜夜久久 | 国产精品乱码高清在线观看 | 五月天婷婷激情视频 | 亚洲国产成人精品激情 | 青草国产视频 | 97超视频在线观看 | www日韩中文字幕在线看 | 国产a一级毛片午夜剧场14 | 亚洲综合色吧 | 亚洲精美视频 | 一级特级片 | 欧美性xxx | 五月天中文在线 |