1. 程式人生 > >ehcache各個引數詳解

ehcache各個引數詳解

-----------------------------------------快取設定大小-------------------------------------------------------- 快取大小的限制可以設定在CacheManager上,也可以設定在單個的Cache上。我們可以設定快取使用記憶體的大小,也可以設定快取使用磁碟的大小,但是使用堆記憶體的大小是必須設定的,其它可設可不設,預設不設就是無限制。 一:CacheManager級別:CacheManager級別有三個屬性分別用來限制儲存器快取資訊的大小,其控制的都是位元組數。 maxBytesLocalHeap:是用來限制快取所能使用的堆記憶體的最大位元組數的,其單位可以是K、M或G,不區分大小寫。預設為0,表示不限制。但是當我們沒有指定CacheManager級別的maxBytesLocalHeap時,我們必須在每一個cache上指定maxBytesLocalHeap或maxEntriesLocalHeap。 maxBytesLocalOffHeap

:是用來限制快取所能使用的非堆記憶體的最大位元組數,其單位也可以是K、M或G。預設是0,表示不限制。但是當我們在CacheManager級別指定了maxBytesLocalOffHeap時就會隱式的使所有Cache級別的overflowToOffHeap為true,在Cache級別使用該屬性時只會使當前Cache的overflowToOffHeap為true。如果此時不需要overflowToOffHeap的話,那麼我們需要在Cache級別顯示的指定overflowToOffHeap為false。只有企業版的Ehcache才能使用非堆記憶體儲存快取資訊。 maxBytesLocalDisk:是用來限制快取所能使用的磁碟的最大位元組數的,其單位可以是K、M或G。預設是0,表示不限制。只有在單機環境下才可以使用本地磁碟,分散式環境下是不可以使用的。另外,這個設定只適用於臨時將快取內的資訊寫入到磁碟的情況,對於持久化快取資訊到磁碟的情況是不適用的。Cache級別的maxBytesLocalDisk同樣如此。當我們在CacheManager級別指定了maxBytesLocalDisk時會隱式的指定所有Cache的overflowToDisk為true,而Cache級別只會使當前Cache的overflowToDisk為true。

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
   xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"  
   maxBytesLocalHeap="500M" maxBytesLocalOffHeap="2G" maxBytesLocalDisk="50G">  
   
</ehcache>  

二:Cache級別:在CacheManager上能夠指定的限制大小的引數在Cache級別都能使用。當我們在Cache級別指定了某種型別的限制大小後,該Cache將不再共享CacheManager內的該種限制了。 與CacheManager不同的是我們在Cache級別上指定maxBytesLocalHeap、maxBytesLocalOffHeap和maxBytesLocalDisk時還可以使用百分比的形式,前提是對應的限制在CacheManager上有指定。。需要注意的是我們所有Cache上指定的位元組數大小之和不能超過CacheManager上對應的限制大小;所有Cache上對應限制以百分比形式指定的和不能超過100%。此外,在Cache級別我們還可以利用兩個屬性來限制在堆記憶體或者是磁碟上快取元素的最大數,這兩個屬性是maxEntriesLocalHeap和maxEntriesLocalDisk,而對於非堆記憶體OffHeap的話是不能指定元素的最大數量的。 maxEntriesLocalHeap

:是用來限制當前快取在堆記憶體上所能儲存的最大元素數量的。Ehcache規定如果在CacheManager上沒有指定maxBytesLocalHeap時必須在各個Cache上指定maxBytesLocalHeap或者maxEntriesLocalHeap,但maxEntriesLocalHeap和maxBytesLocalHeap不能同時出現。也就是說我們不能在一個Cache上同時指定maxBytesLocalHeap和maxEntriesLocalHeap,當然我們也不能在Cache上指定maxEntriesLocalHeap的同時在CacheManager上指定maxBytesLocalHeap。但同時在CacheManager和Cache上指定maxBytesLocalHeap則是允許的。 maxEntriesLocalDisk:是用來限制在磁碟上所能儲存的元素的最大數量的。 -----------------------------------------屬性講解--------------------------------------------------------------- diskStore :將快取中暫時不使用的物件轉移到指定儲存位置,可指定磁碟中資料夾位置。 defaultCache :預設的管理策略,如果不加特殊說明,則所有物件按照此配置項處理 --------------------------------------------必須屬性------------------------------------------------------------ name:Cache的名稱,必須是唯一的(ehcache會把這個cache放到HashMap裡) maxElementsInMemory:在記憶體中快取的elment的最大數目 overflowToDisk:如果記憶體中資料超過記憶體限制,是否要快取到磁碟上 eternal:設定快取的elemen是否永遠不過期。如果為true,則快取的資料始終有效,如果為false那麼還要根據timetoldleSeconds,timeToLiveSeconds判斷。 overflowToDisk:如果記憶體中資料超過記憶體限制,是否要快取到磁碟上。 ---------------------------------------可選擇屬性-------------------------------------------------------------- timeToLiveSeconds:物件存活時間,指物件從建立到失效所需要的時間。只對eternal為false的有效。預設值為0,表示一直可以訪問。(單位:秒) timeToIdleSeconds:物件空閒時,指物件在多長時間沒有被訪問就會失效。只對eternal為false的有效。預設值為0。(單位:秒) diskPersistent:是否在磁碟上持久化。指重啟JVM後,資料是否有效,預設為false diskExpiryThreadIntervalSeconds:物件檢測執行緒執行時間間隔。標識物件狀態的執行緒多長時間執行一次。預設是120秒。(單位:秒) memoryStoreEvictionPolicy:如果記憶體中資料超過記憶體限制,向磁碟快取定時的策略,預設值為LRU,可選FIFO、LFU diskSpoolBufferSizeMB:設定DiskStore(磁碟快取)的快取區大小。預設是30MB。每個cache都應該有自己的一個緩衝區。 clearOnFlush:記憶體數量最大時是否清除。

快取的3種清空策略: FIFO:first in first out (先進先出) LFU:Less Frequency Used (最少使用)一直以來最少被使用的。快取的元素有一個hit屬性,hit值最小的將會被清除快取。 LRU:Least Recently Used(最近最少使用)(ehcache預設值)快取的元素有一個時間戳,當快取容量滿了,而又需要騰出地方來快取新的元素的時候,那麼現有快取元素中時間戳離當前時間最遠的元素將被清除快取。