EhCache使用心得


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

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

 <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配置即可。

2、測試代碼

// 使用默認配置文件創建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
是否生成緩存



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM