EhCache參數及磁盤持久化加載打賞

EhCache是不錯的Java開源緩存模塊,Cache的配置很靈活,官方提供的Cache配置方式有好幾種。你可以通過聲明配置、在xml中配置、在程序里配置或者調用構造方法時傳入不同的參數。

你可以將Cache的配置從代碼中剝離出來,也可以在使用運行時配置,所謂的運行時配置無非也就是在代碼中配置。以下是運行時配置的好處:
1、在同一個地方配置所有的Cache,這樣很容易管理Cache的內存和磁盤消耗。
2、發布時可更改Cache配置。
3、可再安裝階段就檢查出配置錯誤信息,而避免了運行時錯誤。
如下是基本的ehcache.xml

<ehcache>
<diskstore path="java.io.tmpdir"></diskstore>
<defaultcache maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
overflowToDisk="true"
maxElementsOnDisk="10000000"
diskPersistent="false"
diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU"></defaultcache>
</ehcache>

你可以配置defaultCache,可用于所有cache,也可以針對每個cache配置不同的xml,以name屬性來區分
cache的屬性有如下幾個

name:Cache的唯一標識
maxElementsInMemory:內存中最大緩存對象數。
maxElementsOnDisk:磁盤中最大緩存對象數,若是0表示無窮大。
eternal:Element是否永久有效,一但設置了,timeout將不起作用。
overflowToDisk:配置此屬性,當內存中Element數量達到maxElementsInMemory時,Ehcache將會Element寫到磁盤中。
timeToIdleSeconds:設置Element在失效前的允許閑置時間。僅當element不是永久有效時使用,可選屬性,默認值是0,也就是可閑置時間無窮大。
timeToLiveSeconds:設置Element在失效前允許存活時間。最大時間介于創建時間和失效時間之間。僅當element不是永久有效時使用,默認是0.,也就是element存活時間無窮大。
diskPersistent:是否緩存虛擬機重啟期數據。(Server重啟時將緩存序列化到本地,后再加載,保證緩存在重啟后依然有效)。
diskExpiryThreadIntervalSeconds:磁盤失效線程運行時間間隔,默認是120秒。
diskSpoolBufferSizeMB:這個參數設置DiskStore(磁盤緩存)的緩存區大小。默認是30MB。每個Cache都應該有自己的一個緩沖區。
memoryStoreEvictionPolicy:當達到maxElementsInMemory限制時,Ehcache將會根據指定的策略去清理內存。默認策略是LRU(最近最少使用)。你可以設置為FIFO(先進先出)或是LFU(較少使用)。這里比較遺憾,Ehcache并沒有提供一個用戶定制策略的接口,僅僅支持三種指定策略,感覺做的不夠理想。

下面說下最近使用到的磁盤持久化與加載功能,由于之前使用過程中一般為直接緩存,而最近想到使用diskPersistent來配置本地磁盤持久化,發現了一些常見問題,網上找了很多文章終于得到最終效果。
實現此功能其實非常簡單,只用簡單的將diskPersistent配置為true,以tomcat為例,在重啟時候需要告知EhCache,你要重啟了,讓EhCache去序列化內容到磁盤,此過程可以自己寫監聽實現重啟時調用CacheManager的shutdown,也可以直接使用EhCache提供的監聽類net.sf.ehcache.constructs.web.ShutdownListener,但是有一點需要注意,就是在使用此項功能時,必須保持重啟或者關閉Server采用的是正常手段關閉,直接殺進程之類的關閉時完全不生效的。

在配置文件中,則需配置Bootstrapcacheloaderfactory,使用

<BootstrapCacheLoaderFactory class="net.sf.ehcache.store.DiskStoreBootstrapCacheLoaderFactory" properties="bootstrapAsynchronously=true" />

另外,EhCache還提供了分布式的緩存解決方案,以及供開發擴展的API,高級功能,暫時沒有使用,有需要可以自行查閱相關資料。

EhCache參數及磁盤持久化加載
文章《EhCache參數及磁盤持久化加載》二維碼
  • 微信打賞
  • 支付寶打賞

已有4條評論

  1. 歪妖內涵網

    不錯的網站,很喜歡,期待互訪

    2015-09-01 18:21 回復
  2. 廣告聯盟

    飄過 ehcache java 開源

    2015-01-25 21:55 回復
  3. 塑料粉碎機

    路過,了解下

    2014-09-24 16:16 回復

(必填)

(必填)

(可選)

黑龙江22选5开奖