日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MyBatis 缓存详解-缓存体系结构

發布時間:2024/4/13 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MyBatis 缓存详解-缓存体系结构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MyBatis 跟緩存相關的類都在cache 包里面,其中有一個Cache 接口,只有一個默認的實現類PerpetualCache,它是用HashMap 實現的。

除此之外,還有很多的裝飾器,通過這些裝飾器可以額外實現很多的功能:回收策略、日志記錄、定時刷新等等。

// 煎餅加雞蛋加香腸 “裝飾者模式(Decorator Pattern)是指在不改變原有對象的基礎之上,將功能附加到對象上,提供了比繼承更有彈 性的替代方案(擴展原有對象的功能)。”

但是無論怎么裝飾,經過多少層裝飾,最后使用的還是基本的實現類(默認PerpetualCache)。?

所有的緩存實現類總體上可分為三類:基本緩存、淘汰算法緩存、裝飾器緩存。

緩存實現類描述作用裝飾條件
基本緩存緩存基本實現類默認是PerpetualCache,也可以自定義比如
RedisCache、EhCache 等,具備基本功能的緩存類
LruCacheLRU 策略的緩存當緩存到達上限時候,刪除最近最少使用的緩存
(Least Recently Use)
eviction="LRU"(默
認)
FifoCacheFIFO 策略的緩存當緩存到達上限時候,刪除最先入隊的緩存eviction="FIFO"
SoftCache
WeakCache
帶清理策略的緩存通過JVM 的軟引用和弱引用來實現緩存,當JVM
內存不足時,會自動清理掉這些緩存,基于
SoftReference 和WeakReference
eviction="SOFT"
eviction="WEAK"
LoggingCache帶日志功能的緩存比如:輸出緩存命中率基本
SynchronizedCache同步緩存基于synchronized 關鍵字實現,解決并發問題基本
BlockingCache阻塞緩存通過在get/put 方式中加鎖,保證只有一個線程操
作緩存,基于Java 重入鎖實現
blocking=true
SerializedCache支持序列化的緩存將對象序列化以后存到緩存中,取出時反序列化readOnly=false(默
認)
ScheduledCache定時調度的緩存在進行get/put/remove/getSize 等操作前,判斷
緩存時間是否超過了設置的最長緩存時間(默認是
一小時),如果是則清空緩存--即每隔一段時間清
空一次緩存
flushInterval 不為
TransactionalCache事務緩存在二級緩存中使用,可一次存入多個緩存,移除多
個緩存

TransactionalCach
eManager 中用Map
維護對應關系

思考:緩存對象在什么時候創建?什么情況下被裝飾?

我們要弄清楚這個問題,就必須要知道MyBatis 的一級緩存和二級緩存的工作位置和工作方式的區別。

?

?

?

總結

以上是生活随笔為你收集整理的MyBatis 缓存详解-缓存体系结构的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。