mybatis二級快取應用及與ehcache整合

2021-08-20 10:55:25 字數 1599 閱讀 4381

1.開啟mybatis的二級快取

在核心配置檔案sqlmapconfig.xml中加入

2.匯入ehcache相關jar包

ehcache-core-2.6.5.jar

mybatis-ehcache-1.0.2.jar

3.在classpath下加入ehcache.xml檔案

屬性說明:

 diskstore:指定資料在磁碟中的儲存位置。

 defaultcache:當借助cachemanager.add("democache")建立cache時,ehcache便會採用指定的的管理策略

以下屬性是必須的:

 maxelementsinmemory - 在記憶體中快取的element的最大數目 

 maxelementsondisk - 在磁碟上快取的element的最大數目,若是0表示無窮大

 eternal - 設定快取的elements是否永遠不過期。如果為true,則快取的資料始終有效,如果為false那麼還要根據timetoidleseconds,timetoliveseconds判斷

 overflowtodisk - 設定當記憶體快取溢位的時候是否將過期的element快取到磁碟上

以下屬性是可選的:

 timetoidleseconds - 當快取在ehcache中的資料前後兩次訪問的時間超過timetoidleseconds的屬性取值時,這些資料便會刪除,預設值是0,也就是可閒置時間無窮大

 timetoliveseconds - 快取element的有效生命期,預設是0.,也就是element存活時間無窮大

diskspoolbuffersizemb 這個引數設定diskstore(磁碟快取)的快取區大小.預設是30mb.每個cache都應該有自己的乙個緩衝區.

 diskpersistent - 在vm重啟的時候是否啟用磁碟儲存ehcache中的資料,預設是false。

 diskexpirythreadintervalseconds - 磁碟快取的清理執行緒執行間隔,預設是120秒。每個120s,相應的執行緒會進行一次ehcache中資料的清理工作

 memorystoreevictionpolicy - 當記憶體快取達到最大,有新的element加入的時候, 移除快取中element的策略。預設是lru(最近最少使用),可選的有lfu(最不常使用)和fifo(先進先出)

根據需求調整快取引數:

log4j列印如下日誌,說明快取開啟成功:

應用場景:

對於訪問多的查詢請求且使用者對查詢結果實時性要求不高,此時可採用mybatis二級快取技術降低資料庫訪問量,提高訪問速度,業務場景比如:耗時較高的統計分析sql、**賬單查詢sql等。

實現方法如下:通過設定重新整理間隔時間,由mybatis每隔一段時間自動清空快取,根據資料變化頻率設定快取重新整理間隔flushinterval,比如設定為30分鐘、60分鐘、24小時等,根據需求而定。

侷限性:

mybatis二級快取應用及與ehcache整合

1.開啟mybatis的二級快取 在核心配置檔案sqlmapconfig.xml中加入 2.匯入ehcache相關jar包 ehcache core 2.6.5.jar mybatis ehcache 1.0.2.jar 3.在classpath下加入ehcache.xml檔案 屬性說明 disks...

mybatis二級快取

配置檔案 不用配置也是預設開啟的 在sqlmapconfig.xml中 cacheenabled value true 如果不需要二級快取,可以在設定禁用二級快取 select 這樣每次都是從資料庫中讀取 在執行insert,update,delete後會重新整理快取 清空快取 可以設定不重新整理 ...

mybatis 二級快取

一 mybatis 二級快取 3 mybatis 預設二級快取未開啟 內建是支援二級快取的。但是由於本身是資料庫管理元件 所以快取並不好用 所以還是要用第三方的快取機制。典型的 ehcache 二 二級快取的常見演算法 lru least recently used 這種演算法是在每個物件中維護乙個...