日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ehcache缓存的详细配置

發布時間:2025/3/16 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ehcache缓存的详细配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

用到緩存,主要是用來解決并發問題的。

?

其中ehcache是一個純Java的過程中緩存實現Hibernate2.1,Spring都支持EHcache嵌入。

?

本文主要寫Spring中引入ehcache而不是用hibernate.

?

ehcache部署起來很簡單,主要分兩步:

?

1.首先要給他寫個核心配置XML文件

?

Xml代碼??
  • <ehcache>??
  • ??
  • ????????????????<diskStore?path="java.io.tmpdir"/>??
  • ??
  • ????????????????<defaultCache??
  • ????????????????????????maxElementsInMemory="10000"??
  • ????????????????????????eternal="false"??
  • ????????????????????????timeToIdleSeconds="120"??
  • ????????????????????????timeToLiveSeconds="120"??
  • ????????????????????????overflowToDisk="true"??
  • ????????????????????????diskPersistent="false"??
  • ????????????????????????diskExpiryThreadIntervalSeconds="120"??
  • ????????????????????????memoryStoreEvictionPolicy="LRU"??
  • ????????????????????????/>??
  • ??
  • ????????????????<cache?name="cache1"??
  • ???????????????????????maxElementsInMemory="10000"??
  • ???????????????????????eternal="false"??????maxElementsOnDisk="1000"??
  • ???????????????????????overflowToDisk="true"??
  • ???????????????????????timeToIdleSeconds="300"??
  • ???????????????????????timeToLiveSeconds="600"??
  • ???????????????????????memoryStoreEvictionPolicy="LFU"??
  • ????????????????????????/>??
  • ??????????????????????????
  • ????????????</ehcache>??
  • ?

    ?

    屬性解釋:

    ?

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

    ?

    緩存名cache1,內存中最多可緩存10000個Element,其中的element會在閑置5分鐘或是存活10分鐘之后失效。

    ?

    超過10000element時,element將會輸出到磁盤中,輸出路徑是java.io.tmpdir。

    ?

    ?

    從其他文章找到其詳細解釋:

    ?

    ·?? 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并沒有提供一個用戶定制策略的接口,僅僅支持三種指定策略,感覺做的不夠理想。

    ?

    ?

    2.實際要緩存的類調用

    ?

    寫一個實例類,這樣大家就明白差不多了:

    ?

    Java代碼??
  • import?java.io.Serializable;??
  • ??
  • ???????import?net.sf.ehcache.Cache;??
  • ???????import?net.sf.ehcache.CacheManager;??
  • ???????import?net.sf.ehcache.Element;??
  • ??
  • ???????public?class?Demo?{??
  • ?????????????
  • ???????????static?CacheManager?manager=?new?CacheManager();??
  • ??
  • ???????????/**?
  • ????????????*##############################################################################?
  • ????????????*??
  • ????????????*?@DESCRIBE?????
  • ????????????*?@param?args?
  • ????????????*?@throws?InterruptedException?
  • ????????????*??????????????????????????
  • ????????????*##############################################################################?
  • ????????????*/??
  • ???????????public?static?void?main(String[]?args)?throws?InterruptedException?{??
  • ?????????????????
  • ???????????????String[]?cacheNames?=?manager.getCacheNames();??
  • ???????????????System.out.println("讀取的緩存列表為:");??
  • ???????????????for(int?i=0;i<cacheNames.length;i++){???
  • ???????????????????System.out.println("--?"+(i+1)+"?"+cacheNames[i]);??
  • ???????????????}??
  • ?????????????????
  • ???????????????Cache?cache?=?manager.getCache("cache1");??
  • ???????????????Element?element?=?new?Element("key1",?"value1");??
  • ???????????????cache.put(element);??
  • ?????????????????
  • ???????????????element?=?cache.get("key1");??
  • ???????????????Serializable?value?=?element.getValue();??
  • ???????????????System.out.println("序列化后的值為:"+value.toString());??
  • ??
  • ???????????????element?=?cache.get("key1");??
  • ???????????????Object?value1?=?element.getObjectValue();??
  • ???????????????System.out.println("未序列化的值為:"+value1.toString());??
  • ?????????????????
  • ???????????????int?elementsInMemory?=?cache.getSize();??
  • ???????????????System.out.println("得到緩存的對象數量:"+elementsInMemory);??
  • ?????????????????
  • ???????????????long?elementsInMemory1?=?cache.getMemoryStoreSize();??
  • ???????????????System.out.println("得到緩存對象占用內存的數量:"+elementsInMemory1);??
  • ?????????????????
  • ???????????????long?elementsInMemory2?=?cache.getDiskStoreSize();??
  • ???????????????System.out.println("得到緩存對對象占用磁盤的數量:"+elementsInMemory2);??????????
  • ?????????????????
  • ???????????????int?hits?=?cache.getHitCount();??
  • ???????????????System.out.println("得到緩存讀取的命中次數:"+hits);??????????
  • ?????????????????
  • ???????????????int?hits1?=?cache.getMemoryStoreHitCount();??
  • ???????????????System.out.println("得到內存中緩存讀取的命中次數:"+hits1);??????????
  • ?????????????????
  • ???????????????int?hits2?=cache.getDiskStoreHitCount();??
  • ???????????????System.out.println("得到磁盤中緩存讀取的命中次數:"+hits2);??????????
  • ?????????????????
  • ???????????????int?hits3?=?cache.getMissCountNotFound();??
  • ???????????????System.out.println("得到緩存讀取的丟失次數:"+hits3);??????????
  • ?????????????????
  • ???????????????int?hits4?=?cache.getMissCountExpired();??
  • ???????????????System.out.println("得到緩存讀取的已經被銷毀的對象丟失次數:"+hits4);??????
  • ???????????}??
  • ??
  • ???????}??
  • ?

    ?

    ?

    另:附件里需要的ehcache.jar包

    總結

    以上是生活随笔為你收集整理的ehcache缓存的详细配置的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。