EhCache使用心得

jopen 10年前發布 | 15K 次閱讀 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> </pre>然后將文件防止在項目的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");  </pre><a style="text-indent:0px;" title="派生到我的代碼片" href="/misc/goto?guid=4959616736331859734" target="_blank"></a></div>

</div> </div>

打印結果 value

查看

  1. D:/test/ehcache  
  2. </ol> </div> 是否生成緩存

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!