<diskStore path="java.io.tmpdir" /> <defaultCache eternal="false" maxElementsInMemory="3000" overflowToDisk="false" diskPersistent="false" timeToIdleSeconds="0" timeToLiveSeconds="43200" memoryStoreEvictionPolicy="LRU"/> <cache name="allAreasCache" eternal="false" maxElementsInMemory="3000" overflowToDisk="false" diskPersistent="false" timeToIdleSeconds="0" timeToLiveSeconds="43200" memoryStoreEvictionPolicy="LRU" />
參數說明:
diskStore :指定數據存儲位置,可指定磁盤中的文件夾位置
defaultCache : 默認的管理策略
以下屬性是必須的:
name: Cache的名稱,必須是唯一的(ehcache會把這個cache放到HashMap里)。maxElementsInMemory:在內存中緩存的element的最大數目。
eternal:設定緩存的elements是否永遠不過期。如果為true,則緩存的數據始終有效,如果為false那么還要根據timeToIdleSeconds,timeToLiveSeconds判斷。
maxElementsInMemory:cache 中最多可以存放的元素的數量。如果放入cache中的元素超過這個數值,有兩種情況:
1、若overflowToDisk的屬性值為true,會將cache中多出的元素放入磁盤文件中。
2、若overflowToDisk的屬性值為false,會根據memoryStoreEvictionPolicy的策略替換cache中原有的元素。
overflowToDisk: 如果內存中數據超過內存限制,是否要緩存到磁盤上。
maxElementsOnDisk:在磁盤上緩存的element的最大數目,默認值為0,表示不限制。
以下屬性是可選的:
timeToIdleSeconds: 對象空閑時間,指對象在多長時間沒有被訪問就會失效。只對eternal為false的有效。默認值0,表示一直可以訪問。以秒為單位。
timeToLiveSeconds: 對象存活時間,指對象從創建到失效所需要的時間。只對eternal為false的有效。默認值0,表示一直可以訪問。以秒為單位。
diskPersistent: 是否在磁盤上持久化。指重啟jvm后,數據是否有效。默認為false。
diskExpiryThreadIntervalSeconds: 對象檢測線程運行時間間隔。標識對象狀態的線程多長時間運行一次。以秒為單位。
diskSpoolBufferSizeMB: DiskStore使用的磁盤大小,默認值30MB。每個cache使用各自的DiskStore。
memoryStoreEvictionPolicy: 如果內存中數據超過內存限制,向磁盤緩存時的策略。默認值LRU,可選FIFO、LFU。
緩存的3 種清空策略 :
FIFO ,first in first out (先進先出).
LFU , Less Frequently Used (最少使用).意思是一直以來最少被使用的。緩存的元素有一個hit 屬性,hit 值最小的將會被清出緩存。
LRU ,Least Recently Used(最近最少使用). (ehcache 默認值).緩存的元素有一個時間戳,當緩存容量滿了,而又需要騰出地方來緩存新的元素的時候,那么現有緩存元素中時間戳離當前時間最遠的元素將被清出緩存。