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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

缓存之EHCache

發布時間:2024/2/28 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 缓存之EHCache 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載自?http://blog.csdn.net/l271640625/article/details/20528573

一、簡介

非常簡單,而且易用。

????ehcache 是一個非常輕量級的緩存實現,而且從1.2 之后就支持了集群,而且是hibernate 默認的緩存provider。ehcache?是一個純Java的進程內緩存框架,具有快速、精干等特點,是Hibernate中默認的CacheProvider

ehcache可以直接使用。也可以和Hibernate對象/關系框架結合使用。還可以做Servlet緩存。

Cache 存儲方式 :內存或磁盤。

官方網站:http://ehcache.sourceforge.net/

主要特征:

1. 快速.

2. 簡單.

3. 多種緩存策略

4. 緩存數據有兩級:內存和磁盤,因此無需擔心容量問題

5. 緩存數據會在虛擬機重啟的過程中寫入磁盤

6. 可以通過RMI、可插入API等方式進行分布式緩存

7. 具有緩存和緩存管理器的偵聽接口

8. 支持多緩存管理器實例,以及一個實例的多個緩存區域

9. 提供Hibernate的緩存實現

10. 等等

二、快速上手

1、 ?項目類庫中添加ehcache.jar;

2、 ?在類路徑下編寫ehcache.xml配置文件。

三、配置文件參數詳解

ehcache.xml是ehcache的配置文件,并且存放在應用的classpath中。下面是對該XML文件中的一些元素及其屬性的相關說明:?

<diskStore>元素:指定一個文件目錄,當EHCache把數據寫到硬盤上時,將把數據寫到這個文件目錄下。 下面的參數這樣解釋: ??

? ? ? ? ?user.home – 用戶主目錄 ??

? ? ? ? ?user.dir ? ? ?– 用戶當前工作目錄 ??

? ? ? ? ?java.io.tmpdir – 默認臨時文件路徑

<defaultCache>元素:設定緩存的默認數據過期策略。?

<cache>元素:設定具體的命名緩存的數據過期策略。

<cache>元素的屬性?

????????name:緩存名稱。通常為緩存對象的類名(非嚴格標準)。?

????????maxElementsInMemory:設置基于內存的緩存可存放對象的最大數目。?

????????maxElementsOnDisk:設置基于硬盤的緩存可存放對象的最大數目。 ?

????????eternal:如果為true,表示對象永遠不會過期,此時會忽略timeToIdleSeconds和timeToLiveSeconds屬性,默認為false;?

????????timeToIdleSeconds:?設定允許對象處于空閑狀態的最長時間,以秒為單位。當對象自從最近一次被訪問后,如果處于空閑狀態的時間超過了timeToIdleSeconds屬性值,這個對象就會過期。當對象過期,EHCache將把它從緩存中清空。只有當eternal屬性為false,該屬性才有效。如果該屬性值為0,則表示對象可以無限期地處于空閑狀態。?

????????timeToLiveSeconds:設定對象允許存在于緩存中的最長時間,以秒為單位。當對象自從被存放到緩存中后,如果處于緩存中的時間超過了 timeToLiveSeconds屬性值,這個對象就會過期。當對象過期,EHCache將把它從緩存中清除。只有當eternal屬性為false,該屬性才有效。如果該屬性值為0,則表示對象可以無限期地存在于緩存中。timeToLiveSeconds必須大于timeToIdleSeconds屬性,才有意義。?

????????overflowToDisk:如果為true,表示當基于內存的緩存中的對象數目達到了maxElementsInMemory界限后,會把益出的對象寫到基于硬盤的緩存中。注意:如果緩存的對象要寫入到硬盤中的話,則該對象必須實現了Serializable接口才行。

memoryStoreEvictionPolicy:緩存對象清除策略。有三種:

????????1 FIFO ,first in first out ,這個是大家最熟的,先進先出,不多講了

????????2 LFU , Less Frequently Used ,就是上面例子中使用的策略,直白一點就是講一直以來最少被使用的。如上面所講,緩存的元素有一個hit 屬性,hit 值最小的將會被清出緩存。

????????2 LRU ,Least Recently Used ,最近最少使用的,緩存的元素有一個時間戳,當緩存容量滿了,而又需要騰出地方來緩存新的元素的時候,那么現有緩存元素中時間戳離當前時間最遠的元素將被清出緩存。


四、單獨使用EHCache

1.創建CacheManager (net.sf.ehcache.CacheManager)

(1)使用默認配置文件創建

1CacheManager?manager?=?CacheManager.create();

(2)使用指定配置文件創建

1CacheManager?manager?=?CacheManager.create("src/config/ehcache.xml");

(3)從classpath找尋配置文件并創建

1URL?url?=?getClass().getResource("/anothername.xml");
2CacheManager?manager?=?CacheManager.create(url);

(4)通過輸入流創建

1InputStream?fis?=?new?FileInputStream(new?File("src/config/ehcache.xml").getAbsolutePath());
2try?{?
3????manager?=?CacheManager.create(fis);
4?}?finally?{?
5????fis.close();?
6}

2.創建Caches (net.sf.ehcache.Cache)

(1)取得配置文件中預先 定義的sampleCache1設置,生成一個Cache

1Cache?cache?=?manager.getCache("sampleCache1");

(2)設置一個名為test 的新cache,test屬性為默認

1CacheManager?manager?=?CacheManager.create();
2manager.addCache("test");

(3)設置一個名為test 的新cache,并定義其屬性

1CacheManager?manager?=?CacheManager.create();
2Cache?cache?=?new?Cache("test",?1,?true,?false,?5,?2);
3manager.addCache(cache);

(4)刪除cache

1CacheManager?singletonManager?=?CacheManager.create();
2singletonManager.removeCache("sampleCache1");

3.使用Caches

(1)往cache中加入元素

1Element?element?=?new?Element("key1",?"value1");
2cache.put(new?Element(element);

(2)從cache中取得元素

1Element?element?=?cache.get("key1");

(3)從cache中刪除元素

1Cache?cache?=?manager.getCache("sampleCache1");
2Element?element?=?new?Element("key1",?"value1");
3cache.remove("key1");

4.卸載CacheManager ,關閉Cache

1?manager.shutdown();

下附代碼。

五、在 Hibernate 中運用EHCache

1、hibernate.cfg.xml中需設置如下:

3系列版本加入

1<property?name=”?hibernate.cache.provider_class”>
2????org.hibernate.cache.EhCacheProvider
3</property>

EhCacheProvider類位于hibernate3.jar

2.1版本加入

net.sf.ehcache.hibernate.Provider

2.1以下版本加入

net.sf.hibernate.cache.EhCache

?2、在Hibernate3.x中的etc目錄下有ehcache.xml的示范文件,將其復制應用程序的src目錄下(編譯時會把ehcache.xml復制到WEB-INF/classess目錄下),對其中的相關值進行更改以和自己的程序相適合。

?3、持久化類的映射文件進行配置

1<cache?usage="read-write"/>

在<set>標記中設置了<cache usage="read-write"/>,但Hibernate僅把和Group相關的Student的主鍵id加入到緩存中,如果希望把整個Student的散裝屬性都加入到二級緩存中,還需要在Student.hbm.xml文件的<class>標記中加入<cache>子標記,如下所示:

1<cache?usage="read-write"?/>?<!--cache標記需跟在class標記后-->

?注:SSH中hibernate配置的cache信息

1<prop?key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>

總結

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

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