1. 程式人生 > >Mybatis使用第三方快取框架ehchache

Mybatis使用第三方快取框架ehchache

Mybatis提供了很多與其他框架的整合解決方案:https://github.com/mybatis

ehcache快取框架整合的文件地址:http://www.mybatis.org/ehcache-cache/

 

1.Maven工程配置pom.xml匯入jar包

因為ehcache的依賴slf4j這個日誌的jar包,會和log4j的jar衝突,導致日誌不能顯示了,解決辦法就整合他們,匯入聯合jar包,所以還要一個依賴 slf4j

		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>1.7.25</version>
		</dependency>
		<dependency>
		    <groupId>org.mybatis.caches</groupId>
		    <artifactId>mybatis-ehcache</artifactId>
		    <version>1.1.0</version>
		</dependency>

2.在sql對映檔案中的mapper標籤下配置開啟ehcace快取

<mapper namespace="cn.jq.mybatis.dao.UserMapper">
	<cache type="org.mybatis.caches.ehcache.EhcacheCache"/>

3.寫一個ehcache快取的配置檔案ehcache.xml

<?xml version="1.0" encoding="UTF-8" ?>
<ehcache>   
    <diskStore path="d:/ehcache/"/>     
    <defaultCache     
           maxElementsInMemory="10000"    
           eternal="false"    
           timeToIdleSeconds="120"    
           timeToLiveSeconds="120"    
           overflowToDisk="true"    
           maxElementsOnDisk="10000000"    
           diskPersistent="false"    
           diskExpiryThreadIntervalSeconds="120"    
           memoryStoreEvictionPolicy="LRU"    
           />     
</ehcache>

執行例項即可

 

EHCACHE快取的配置檔案解釋: https://my.oschina.net/u/1450300/blog/525886

1、屬性說明

2.1.diskStore

  指定資料儲存位置,可指定磁碟中的資料夾位置。樣例中配置位置為“d:/ehcache/”, 什麼意思呢? 記憶體中的快取滿了,裝不下了,就放這裡,注意:它是臨時的檔案, sessionFactory.close後, 這裡的檔案會自動刪除!

2.2.defaultCache

  預設快取配置

2.3.cache

  指定物件的快取配置,其中 name 屬性為指定快取的名稱(必須唯一)

2.4.配置屬性中的元素說明

   1)maxElementsInMemory(正整數):

    在記憶體中快取的最大物件數量

   2)maxElementsOnDisk(正整數):

    在磁碟上快取的最大物件數量,預設值為0,表示不限制。

   3)eternal:

    設定快取物件儲存的永久屬性,預設為 false 。當為 true 時 timeToIdleSeconds、timeToLiveSeconds 失效。 表示這個快取永遠不清除!

   4)timeToIdleSeconds(單位:秒):

    物件空閒時間,指物件在多長時間沒有被訪問就會失效。只對eternal為false的有效。預設值0,表示一直可以訪問。失效時間!

   5)timeToLiveSeconds(單位:秒):

    物件存活時間,指物件從建立到失效所需要的時間。只對eternal為false的有效。預設值0,表示一直可以訪問。

   6)overflowToDisk:

    如果記憶體中資料超過記憶體限制,是否要快取到磁碟上。

   7)diskPersistent:

    是否在磁碟上持久化。指重啟jvm後,資料是否有效。預設為false。

   8)diskSpoolBufferSizeMB(單位:MB):

    DiskStore使用的磁碟大小,預設值30MB。每個cache使用各自的DiskStore。

   9)memoryStoreEvictionPolicy:

    如果記憶體中資料超過記憶體限制,向磁碟快取時的策略。預設值LRU,可選FIFO、LFU。

10) diskExpiryThreadIntervalSeconds清理執行緒執行清理的間隔時間。

 

2、清空策略

1.FIFO(first in first out):

  先進先出

2.LFU(Less Frequently Used):

  最少被使用,快取的元素有一個hit屬性,hit值最小的將會被清除快取。

3.LRU(Least Recently Used)預設策略:

  最近最少使用,快取的元素有一個時間戳,當快取容量滿了,而又需要騰出地方來快取新的元素的時候,那麼現有快取元素中時間戳離當前時間最遠的元素將被清除快取。