ehcache各個參數詳解 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。
  1. <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.    xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"  
  3.    maxBytesLocalHeap="500M" maxBytesLocalOffHeap="2G" maxBytesLocalDisk="50G">  
  4.    
  5. </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默認值)緩存的元素有一個時間戳,當緩存容量滿了,而又需要騰出地方來緩存新的元素的時候,那麼現有緩存元素中時間戳離當前時間最遠的元素將被清除緩存。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章