Ehcache學習(五)緩衝配置

來源:互聯網
上載者:User

Ehcache緩衝配置 http://blog.csdn.net/mgoann/archive/2009/04/17/4087714.aspx

簡介

Cache的配置很靈活,官方提供的Cache配置方式有好幾種。你可以通過聲明配置、在xml中配置、在程式裡配置或者調用構造方法時傳入不同的參數。

你可以將Cache的配置從代碼中剝離出來,也可以在使用運行時配置,所謂的運行時配置無非也就是在代碼中配置。以下是運行時配置的好處:

· 在同一個地方配置所有的Cache,這樣很容易管理Cache的記憶體和磁碟消耗。

· 發布時可更改Cache配置。

· 可再安裝階段就檢查出配置錯誤資訊,而避免了執行階段錯誤。

本文將會對ehcache.xml設定檔進行詳細的闡述。在配置的時可以拷貝一個現有的ehcache.xml,如果沒有請點擊這裡去下載。

ehcache-failsafe.xml

如果你調用了CacheManager預設構造方法去建立CacheManager的執行個體,此方法會到classpath中找ehcache.xml檔案,否則它會到類路徑下找ehcache-failsafe.xml檔案。而ehcache-failsafe.xml被包含在jar包中,所有它肯定能找的到。

ehcache-failsafe.xml提供了一個非常簡單的預設配置,這樣可以使使用者在沒有建立ehcache.xml的情況下使用Ehcache。

不過這樣做Ehcache會提醒使用者建立一個正確的Ehcache配置。

ehcache.xml片段:

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

ehcache.xml和其他設定檔

在Ehcache-1.6之前的版本,只支援ASCII編碼的ehcache.xml設定檔。在Ehcach-1.6之後版本中,支援UTF8編碼的ehcache.xml設定檔。因為向後相容,所有採用ASCII編碼的設定檔完全沒有必要轉換為UTF8。

一個CacheManager必須要有一個XML配置。由於磁碟路徑或是監聽連接埠,多個CacheManager使用同一個設定檔時會出現錯誤。

下面是ehcache.xml具體執行個體以及配置指南

<ehcache xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance

· CacheManager配置

DmulticastGroupPort=4446,這樣可以配置監聽連接埠。

· DiskStore配置

如果你使用的DiskStore(磁碟緩衝),你必須要配置DiskStore配置項。如果不配置,Ehcache將會使用java.io.tmpdir。

diskStroe的“path”屬性是用來配置磁碟緩衝使用的實體路徑的,Ehcache磁碟緩衝使用的檔案尾碼名是.data和.index。

<disStore path=”java.io.tmpdir”/>

· CacheManagerEventListener配置

我們通過CacheManagerEventListenerFactory可以執行個體化一個CacheManagerPeerProvider,當我們從CacheManager中added和removed Cache時,將通知CacheManagerPeerProvider,這樣一來,我們就可以很方面的對CacheManager中的Cache做一些統計。

註冊到CacheManager的事件監聽類名有: adding a Cache和removing a Cache

<cacheManagerEventListenerFacotory class=”” properties=””/>

· CacheManagerPeerProvider配置

在叢集中CacheManager配置CacheManagerPeerProviderFactory建立CacheManagerPeerProvider。具體的執行個體如下:

<cacheManagerPeerProviderFactoryclass="net.sf.ehcache.distribution.

RMICacheManagerPeerProviderFactory"

properties="peerDiscovery=manual, rmiUrls=//server1:40000/sampleCache1|//server2:40000/sampleCache1| //server1:40000/sampleCache2|//server2:40000/sampleCache2"

propertySeparator="," />

· CacheManagerPeerListener配置

CacheManagerPeerListener配置是用來監聽叢集中緩衝訊息的分發的。

<cacheManagerPeerListenerFactory

class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"

properties="hostName=fully_qualified_hostname_or_ip,

port=40001,

socketTimeoutMillis=120000"

propertySeparator="," />

· Cache配置

· name:Cache的唯一標識

· maxElementsInMemory:記憶體中最大緩衝對象數。

· maxElementsOnDisk:磁碟中最大緩衝對象數,若是0表示無窮大。

· eternal:Element是否永久有效,一但設定了,timeout將不起作用。

· overflowToDisk:配置此屬性,當記憶體中Element數量達到maxElementsInMemory時,Ehcache將會Element寫到磁碟中。

· timeToIdleSeconds:設定Element在失效前的允許閑置時間。僅當element不是永久有效時使用,可選屬性,預設值是0,也就是可閑置時間無窮大。

· timeToLiveSeconds:設定Element在失效前允許存活時間。最大時間介於建立時間和失效時間之間。僅當element不是永久有效時使用,預設是0.,也就是element存活時間無窮大。

· diskPersistent:是否緩衝虛擬機器重啟期資料。(這個虛擬機器是指什麼虛擬機器一直沒看明白是什麼,有高人還希望能指點一二)。

· diskExpiryThreadIntervalSeconds:磁碟失效線程已耗用時間間隔,預設是120秒。

· diskSpoolBufferSizeMB:這個參數設定DiskStore(磁碟緩衝)的緩衝區大小。預設是30MB。每個Cache都應該有自己的一個緩衝區。

· memoryStoreEvictionPolicy:當達到maxElementsInMemory限制時,Ehcache將會根據指定的策略去清理記憶體。預設策略是LRU(最近最少使用)。你可以設定為FIFO(先進先出)或是LFU(較少使用)。這裡比較遺憾,Ehcache並沒有提供一個使用者定製策略的介面,僅僅支援三種指定策略,感覺做的不夠理想。

· Cache Exception Handling配置

<cacheExceptionHandlerFactory class="com.example.ExampleExceptionHandlerFactory" properties="logLevel=FINE"/>

總結

這裡只對通用緩衝的配置做了詳細的闡述,至於RMI緩衝和叢集緩衝可以參考這裡。

下面給出幾個配置樣本:

· Ehcache預設Cache配置

<defaultCache

maxElementsInMemory="10000"

eternal="false"

timeToIdleSeconds="120"

timeToLiveSeconds="120"

overflowToDisk="true"

diskSpoolBufferSizeMB="30"

maxElementsOnDisk="10000000"

diskPersistent="false"

diskExpiryThreadIntervalSeconds="120"

memoryStoreEvictionPolicy="LRU"

/>

· SampleCache1配置

簡單配置,在ehcache.xml檔案中有此配置,在使用Ehcache前最好將其刪除掉,自己配置。

緩衝名sampleCache1,記憶體中最多可緩衝10000個Element,其中的element會在閑置

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.