自定義快取 - ehcache
Ehcache是一種廣泛使用的開源Java分散式快取。主要面向通用快取,Java EE和輕量級容器
導包
<!-- https://mvnrepository.com/artifact/org.mybatis.caches/mybatis-ehcache -->
<dependency>
<groupId>org.mybatis.caches</groupId>
<artifactId>mybatis-ehcache</artifactId>
<version>1.1.0</version>
</dependency>
在 Mapper.xml 中指定使用 ehcache 快取實現
<cache type="org.mybatis.caches.ehcache.EhcacheCache"/>
在resource中定義配置檔案 ehcache.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!--
diskStore: 快取路徑, ehcache分為記憶體和磁碟兩級, 此屬性定義磁碟的快取位置
引數:
user.home - 使用者主目錄
user.dir - 使用者當前工作目錄
java.io.tmpdir - 預設臨時檔案路徑
-->
<!-- java專案 www.fhadmin.org -->
<!--當二級快取的物件 超過記憶體限制時(快取物件的個數>maxElementsInMemory),存放入的硬碟檔案 -->
<diskStore path="./tempdir/Tmp_Ehcache"/>
<!--default 預設緩衝策略, 當ehcache找不到定義的快取時, 則使用這個快取策略, 這個只能定義一個-->
<defaultCache
eternal="false"
maxElementsInMemory="10000"
overflowToDisk="false"
diskPersistent="false"
timeToIdleSeconds="1800"
timeToLiveSeconds="259200"
memoryStoreEvictionPolicy="LRU"/>
<cache
name="cloud_user"
eternal="false"
maxElementsInMemory="5000"
overflowToDisk="false"
diskPersistent="false"
timeToIdleSeconds="1800"
timeToLiveSeconds="1800"
memoryStoreEvictionPolicy="LRU"/>
<!--
java專案 www.fhadmin.cn
maxElementsInMemory:設定 在記憶體中快取 物件的個數
maxElementsOnDisk:設定 在硬碟中快取 物件的個數
eternal:設定快取是否 永遠不過期
overflowToDisk:當系統當機的時候是否儲存到磁碟上
maxElementsInMemory的時候,是否轉移到硬碟中
timeToIdleSeconds:當2次訪問 超過該值的時候,將快取物件失效
timeToLiveSeconds:一個快取物件 最多存放的時間(生命週期)
diskExpiryThreadIntervalSeconds:設定每隔多長時間,透過一個執行緒來清理硬碟中的快取
clearOnFlush: 記憶體數量最大時是否清除
memoryStoreEvictionPolicy:當超過快取物件的最大值時,處理的策略;LRU (最少使用),FIFO (先進先出), LFU (最少訪問次數)
-->
本作品採用《CC 協議》,轉載必須註明作者和本文連結