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

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 Java緩存框架教程,Caffeine內存緩存框架

Java緩存框架教程,Caffeine內存緩存框架

更新時間:2020-02-11 09:54:11 來源:動力節點 瀏覽6403次


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


  Cache(緩存),基于GoogleGuava,Caffeine提供一個內存緩存,大大改善了設計Guava'scache和ConcurrentLinkedHashMap的體驗。


java緩存框架教程,Caffeine內存緩存框架


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


  Caffeine提供了靈活的結構來創建緩存,并且有以下特性:


  自動加載條目到緩存中,可選異步方式


  可以基于大小剔除


  可以設置過期時間,時間可以從上次訪問或上次寫入開始計算


  異步刷新


  keys自動包裝在弱引用中


  values自動包裝在弱引用或軟引用中


  條目剔除通知


  緩存訪問統計


  1.加載/填充


  Caffeine提供以下四種類型的加載策略:


  1.1.Manual


java緩存框架教程,Caffeine內存緩存框架


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


  1.2.Loading


java緩存框架教程,Caffeine內存緩存框架


  LoadingCache通過關聯一個CacheLoader來構建Cache


  通過LoadingCache的getAll方法,可以批量查詢


  1.3.Asynchronous(Manual)


java緩存框架教程,Caffeine內存緩存框架


  AsyncCache是另一種Cache,它基于Executor計算條目,并返回一個CompletableFuture。


  1.4.AsynchronouslyLoading


java緩存框架教程,Caffeine內存緩存框架


  AsyncLoadingCache是關聯了AsyncCacheLoader的AsyncCache


  2.剔除


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


  2.1.Size-based


java緩存框架教程,Caffeine內存緩存框架


  如果緩存的條目數量不應該超過某個值,那么可以使用Caffeine.maximumSize(long)。如果超過這個值,則會剔除很久沒有被訪問過或者不經常使用的那個條目。


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


  簡單的來說,要么限制緩存條目的數量,要么限制緩存條目的權重值,二者取其一。限制數量很好理解,限制權重的話首先你得提供一個函數來設定每個條目的權重值是多少,然后才能顯示最大的權重是多少。


  2.2.Time-based


java緩存框架教程,Caffeine內存緩存框架


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


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


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


  建議,主動維護緩存中條目,而不是等到訪問的時候發現緩存條目已經失效了才去重新加載。意思就是,提前加載,定期維護。


  可以在構建的時候Caffeine.scheduler(Scheduler)來指定調度線程


  2.3.Reference-based


java緩存框架教程,Caffeine內存緩存框架


  Caffeine.weakKeys()使用弱引用存儲key。如果沒有強引用這個key,則允許垃圾回收器回收該條目。注意,這是使用==判斷key的。


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


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


  3.刪除


  術語:


  eviction指受策略影響而被刪除


  invalidation值被調用者手動刪除


  removal值因eviction或invalidation而發生的一種行為


  3.1.明確地刪除


java緩存框架教程,Caffeine內存緩存框架


  3.2.監聽器


java緩存框架教程,Caffeine內存緩存框架


  4.刷新


java緩存框架教程,Caffeine內存緩存框架


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


  5.統計


java緩存框架教程,Caffeine內存緩存框架


  使用Caffeine.recordStats(),你可以打開統計功能。Cache.stats()方法會返回一個CacheStats對象,該對象提供以下統計信息:


  hitRate():命中率


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


  averageLoadPenalty():加載新值所花費的平均時間


  6.示例


  終于要說到重點了


  一般來講,用Redis作為一級話緩存,Caffeine作為二級緩存


  6.1.示例一:單獨使用


  pom.xml


java緩存框架教程,Caffeine內存緩存框架


  config


java緩存框架教程,Caffeine內存緩存框架


  service


java緩存框架教程,Caffeine內存緩存框架


  補充一點:你都用本地緩存了,必定已經用了一級緩存了。一級緩存無法達到預期的性能,才會選擇用本地緩存。


  controller


java緩存框架教程,Caffeine內存緩存框架


  application.yml


java緩存框架教程,Caffeine內存緩存框架


  service


java緩存框架教程,Caffeine內存緩存框架


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


  7.工程結構


  java緩存框架教程,Caffeine內存緩存框架


  完整的pom.xml


java緩存框架教程,Caffeine內存緩存框架


       以上就是動力節點Java培訓機構小編介紹的“java緩存框架教程,Caffeine內存緩存框架”的內容,希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。


  相關內容


  深入淺出的Java學習路徑,Java練手項目學習


  新手Java的三大框架ssh學習


  JavaSSH框架教學視頻


提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 青春草国产成人精品久久 | 在线黄色免费 | 人人澡人人澡人人看欧美 | 精品精品国产自在香蕉网 | 奇米网7777 | 99久久精品费精品国产一区二区 | 国产免费专区 | 国内精品久久国产大陆 | 欧美精品久久久久久久影视 | 国产精品偷伦视频免费观看的 | 午夜精品久久久久久久四虎 | 久久天天躁综合夜夜黑人鲁色 | 一级中国毛片 | 一级日本高清视频免费观看 | 五月天国产精品 | 国产69精品久久久久妇女 | 成人午夜啪啪免费网站 | 国产亚洲精品成人久久网站 | 久热操| 亚洲日韩精品欧美一区二区 | 四虎影视免费 | 国产日韩欧美综合一区二区三区 | 国内永久第一免费福利视频 | 久久久久久亚洲精品 | 精品精品久久宅男的天堂 | 国产免费久久精品99 | 国产精品久久久久毛片真精品 | 色噜噜亚洲精品中文字幕 | 色综合啪啪| 国产夫妻久久线观看 | 久久99热只有视精品6国产 | 超高清欧美videos360 | 男人的天堂视频 | 久艾草国产成人综合在线视频 | 久草91| 性性影院在线观看 | 欧美性色xo影院在线观看 | 中文字幕国产亚洲 | 欧美毛片网站 | 狠狠久久亚洲欧美专区 | 亚洲一区二区在线免费观看 |