EhCache使用心得

在開發高併發量,高性能的網站應用系統時,緩存Cache起到了很是重要的做用。本文主要介紹EHCache的使用,以及使用EHCache的實踐經驗。html

一、配置ehcache.xml,不配置將使用默認,建議配置!java

 <ehcache updateCheck="false" dynamicConfig="false">
    <diskStore path="D:/test/ehcache"/>
    <defaultCache
        maxElementsInMemory="1000"
        eternal="false"
        overflowToDisk="true"
        timeToIdleSeconds="120"
        timeToLiveSeconds="120"
        diskPersistent="false"
        diskExpiryThreadIntervalSeconds="120"
    />    
   
    <cache name="topCache"
        maxElementsInMemory="10"
        eternal="false"
        timeToIdleSeconds="60"
        timeToLiveSeconds="60"
        overflowToDisk="true"
   /> 

   <cache name="msgCache"
        maxElementsInMemory="10"
        eternal="true"
        timeToIdleSeconds="120"
        timeToLiveSeconds="120"
        overflowToDisk="true"
        diskPersistent="true"
   />
</ehcache> 

而後將文件防止在項目的src目錄下,由於下面在建立CacheManager沒有指定ehcache.xml路徑,那麼將使用默認classpath目錄下的。

各配置參數的含義:
maxElementsInMemory:緩存中容許建立的最大對象數
eternal:緩存中對象是否爲永久的,若是是,超時設置將被忽略,對象從不過時。
timeToIdleSeconds:緩存數據的鈍化時間,也就是在一個元素消亡以前,兩次訪問時間的最大時間間隔值,這隻能在元素不是永久駐留時有效,若是該值是0 就意味着元素能夠停頓無窮長的時間。
timeToLiveSeconds:緩存數據的生存時間,也就是一個元素從構建到消亡的最大時間間隔值,這隻能在元素不是永久駐留時有效,若是該值是0就意味着元素能夠停頓無窮長的時間。
overflowToDisk:內存不足時,是否啓用磁盤緩存。
算法

diskPersistent 是否持久化磁盤緩存,當這個屬性的值爲true時,系統在初始化時會在磁盤中查找文件名爲cache名稱,後綴名爲index的文件
緩存

memoryStoreEvictionPolic併發

y:緩存滿了以後的淘汰算法。LRU和FIFO算法這裏就不作介紹。LFU算法直接淘汰使用比較少的對象,在內存保留的都是一些常常訪問的對象。對於大部分網站項目,該算法比較適用。
若是應用須要配置多個不一樣命名並採用不一樣參數的Cache,能夠相應修改配置文件,增長鬚要的Cache配置便可。
高併發

二、測試代碼性能

// 使用默認配置文件建立CacheManager
CacheManager manager = CacheManager.create();
// 經過manager能夠生成指定名稱的Cache對象
Cache cache = cache = manager.getCache("msgCache");

能夠經過調用manager.removalAll()來移除全部的Cache。經過調用manager的shutdown()方法能夠關閉CacheManager。
有了Cache對象以後就能夠進行一些基本的Cache操做,例如:
//往cache中添加元素
Element element = new Element("key", "value");
cache.put(element);
//從cache中取回元素
Element element = cache.get("key");
System,out.println(element.getValue());
//從Cache中移除一個元素
cache.remove("key");
<pre name="code" class="java">// 使用manager移除指定名稱的Cache對象
manager.removeCache("msgCache");

 

打印結果 value測試

查看網站

D:/test/ehcache
是否生成緩存
相關文章
相關標籤/搜索