ehcache說明文檔.doc_第1頁
ehcache說明文檔.doc_第2頁
ehcache說明文檔.doc_第3頁
ehcache說明文檔.doc_第4頁
ehcache說明文檔.doc_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

一、簡介非常簡單,而且易用。ehcache 是一個非常輕量級的緩存實現(xiàn),而且從1.2 之后就支持了集群,而且是hibernate 默認的緩存provider 。EhCache 是一個純Java的進程內(nèi)緩存框架,具有快速、精干等特點,是Hibernate中默認的CacheProvider。Ehcache可以直接使用。也可以和Hibernate對象/關(guān)系框架結(jié)合使用。還可以做Servlet緩存。Cache 存儲方式 :內(nèi)存或磁盤。官方網(wǎng)站:/ 主要特性1. 快速.2. 簡單.3. 多種緩存策略4. 緩存數(shù)據(jù)有兩級:內(nèi)存和磁盤,因此無需擔(dān)心容量問題5. 緩存數(shù)據(jù)會在虛擬機重啟的過程中寫入磁盤6. 可以通過RMI、可插入API等方式進行分布式緩存7. 具有緩存和緩存管理器的偵聽接口8. 支持多緩存管理器實例,以及一個實例的多個緩存區(qū)域9. 提供Hibernate的緩存實現(xiàn)10. 等等二、快速上手1、 項目類庫中添加ehcache.jar;2、 在類路徑下編寫ehcache.xml配置文件。三、配置文件參數(shù)詳解ehcache.xml是ehcache的配置文件,并且存放在應(yīng)用的classpath中。下面是對該XML文件中的一些元素及其屬性的相關(guān)說明:元素:指定一個文件目錄,當(dāng)EHCache把數(shù)據(jù)寫到硬盤上時,將把數(shù)據(jù)寫到這個文件目錄下。下面的參數(shù)這樣解釋: user.home 用戶主目錄 user.dir 用戶當(dāng)前工作目錄 java.io.tmpdir 默認臨時文件路徑元素:設(shè)定緩存的默認數(shù)據(jù)過期策略。元素:設(shè)定具體的命名緩存的數(shù)據(jù)過期策略。元素的屬性name:緩存名稱。通常為緩存對象的類名(非嚴格標(biāo)準(zhǔn))。maxElementsInMemory:設(shè)置基于內(nèi)存的緩存可存放對象的最大數(shù)目。maxElementsOnDisk:設(shè)置基于硬盤的緩存可存放對象的最大數(shù)目。 eternal:如果為true,表示對象永遠不會過期,此時會忽略timeToIdleSeconds和timeToLiveSeconds屬性,默認為false;timeToIdleSeconds: 設(shè)定允許對象處于空閑狀態(tài)的最長時間,以秒為單位。當(dāng)對象自從最近一次被訪問后,如果處于空閑狀態(tài)的時間超過了timeToIdleSeconds屬性值,這個對象就會過期。當(dāng)對象過期,EHCache將把它從緩存中清空。只有當(dāng)eternal屬性為false,該屬性才有效。如果該屬性值為0,則表示對象可以無限期地處于空閑狀態(tài)。timeToLiveSeconds:設(shè)定對象允許存在于緩存中的最長時間,以秒為單位。當(dāng)對象自從被存放到緩存中后,如果處于緩存中的時間超過了 timeToLiveSeconds屬性值,這個對象就會過期。當(dāng)對象過期,EHCache將把它從緩存中清除。只有當(dāng)eternal屬性為false,該屬性才有效。如果該屬性值為0,則表示對象可以無限期地存在于緩存中。timeToLiveSeconds必須大于timeToIdleSeconds屬性,才有意義。overflowToDisk:如果為true,表示當(dāng)基于內(nèi)存的緩存中的對象數(shù)目達到了maxElementsInMemory界限后,會把益出的對象寫到基于硬盤的緩存中。注意:如果緩存的對象要寫入到硬盤中的話,則該對象必須實現(xiàn)了Serializable接口才行。memoryStoreEvictionPolicy:緩存對象清除策略。有三種:1 FIFO ,first in first out ,這個是大家最熟的,先進先出,不多講了 2 LFU , Less Frequently Used ,就是上面例子中使用的策略,直白一點就是講一直以來最少被使用的。如上面所講,緩存的元素有一個hit 屬性,hit 值最小的將會被清出緩存。 2 LRU ,Least Recently Used ,最近最少使用的,緩存的元素有一個時間戳,當(dāng)緩存容量滿了,而又需要騰出地方來緩存新的元素的時候,那么現(xiàn)有緩存元素中時間戳離當(dāng)前時間最遠的元素將被清出緩存。四、單獨使用EHCache1.創(chuàng)建CacheManager (net.sf.ehcache.CacheManager) (1)使用默認配置文件創(chuàng)建 CacheManager manager = CacheManager.create(); (2)使用指定配置文件創(chuàng)建 CacheManager manager = CacheManager.create(src/config/ehcache.xml); (3)從classpath找尋配置文件并創(chuàng)建 URL url = getClass().getResource(/anothername.xml); CacheManager manager = CacheManager.create(url); (4)通過輸入流創(chuàng)建 InputStream fis = new FileInputStream(new File(src/config/ehcache.xml).getAbsolutePath(); try manager = CacheManager.create(fis); finally fis.close(); 2.創(chuàng)建Caches (net.sf.ehcache.Cache)(1)取得配置文件中預(yù)先 定義的sampleCache1設(shè)置,生成一個Cache Cache cache = manager.getCache(sampleCache1); (2)設(shè)置一個名為test 的新cache,test屬性為默認 CacheManager manager = CacheManager.create(); manager.addCache(test); (3)設(shè)置一個名為test 的新cache,并定義其屬性 CacheManager manager = CacheManager.create(); Cache cache = new Cache(test, 1, true, false, 5, 2); manager.addCache(cache); (4)刪除cacheCacheManager singletonManager = CacheManager.create();singletonManager.removeCache(sampleCache1);3.使用Caches(1)往cache中加入元素 Element element = new Element(key1, value1); cache.put(new Element(element); (2)從cache中取得元素 Element element = cache.get(key1); (3)從cache中刪除元素Cache cache = manager.getCache(sampleCache1);Element element = new Element(key1, value1);cache.remove(key1); 3.卸載CacheManager ,關(guān)閉Cache manager.shutdown();下附代碼。五、在 Hibernate 中運用EHCache 1、hibernate.cfg.xml中需設(shè)置如下:3系列版本加入org.hibernate.cache.EhCacheProvider EhCacheProvider類位于hibernate3.jar2.1版本加入 net.sf.ehcache.hibernate.Provider 2.1以下版本加入 net.sf.hibernate.cache.EhCache 2、在Hibernate3.x中的etc目錄下有ehcache.xml的示范文件,將其復(fù)制應(yīng)用程序的src目錄下(編譯時會把ehcache.xml復(fù)制到WEB-INF/classess目錄下),對其中的相關(guān)值進行更改以和自己的程序相適合。3、持久化類的映射文件進行配置在標(biāo)記中設(shè)置了,但Hibernate僅把和Group相關(guān)的Student的主鍵id加入到緩存中,如果希望把整個Student的散裝屬性都加入到二級緩存中,還需要在Student.hbm.xml文件的標(biāo)記中加入子標(biāo)記,如下所示: 注:SSH中hibernate配置的cache信息org.hibernate.cache.EhCacheProvider六、在頁面中使用EHCache緩存簡單的來說,如果一個應(yīng)用中80% 的時間內(nèi)都在訪問20% 的數(shù)據(jù),那么,這時候就應(yīng)該使用緩存了。在80/20 原則生效的地方,我們都應(yīng)該考慮是否可以使用緩存。但即使是這樣,緩存也有不同的用法,舉個例子,一個網(wǎng)站的首頁估計是被訪問的次數(shù)最多的,我們可以考慮給首頁做一個頁面緩存。頁面訪問最頻繁的,做緩存。不同的頁面的緩存策略有可能有天壤之別。毫無疑問,幾乎所有的網(wǎng)站的首頁都是訪問率最高的,而首頁上的數(shù)據(jù)來源又是非常廣泛的,大多數(shù)來自不同的對象,而且有可能來自不同的db ,所以給首頁做緩存是一個不錯的主意,那么主頁的緩存策略是什么樣子的呢,我認為應(yīng)該是某個固定時間之內(nèi)不變的,比如說2 分鐘更新一次?;蛘吒鶕?jù)不同的網(wǎng)頁功能采取合理的策略。在使用ehcache 的頁面緩存之前,我們必須要了解ehcache 的2個概念: (1)timeToIdleSeconds ,多長時間不訪問該緩存,那么ehcache 就會清除該緩存。 (2)timeToLiveSeconds ,緩存的存活時間,從開始創(chuàng)建的時間算起。1、配置ehcache.xml文件2、在web.xml配置文件中配置過濾器信息好了,緩存整個頁面看上去是非常的簡單,甚至都不需要寫一行代碼,只需要幾行配置就行了,夠簡單吧,雖然看上去簡單,但是事實上內(nèi)部實現(xiàn)卻不簡單哦,有興趣的話,大家可以看看SimplePageCachingFilter 繼承體系的源代碼。緩存首頁(整個頁面)示例: indexCacheFilter net.sf.ehcache.constructs.web.filter.SimplePageCachingFilter indexCacheFilter *index.action 緩存首頁的部分內(nèi)容時,需要使用SimplePageFragmentCachingFilter 這個filter 。如: indexCacheFilter net.sf.ehcache.constructs.web.filter.SimplePageFragmentCachingFilter indexCacheFilter */index_right.jsp 這個jsp 需要被jsp:include 到其他頁面,這樣就做到的局部頁面的緩存。這一點貌似沒有oscache 的tag 好用。七、在Spring框架中使用EHCache緩存就是使用Spring提供的springmodules和EHCache來簡化程序的開發(fā),通過配置文件來完成提供緩存。參考springmodules的文檔。1、配置ehcache.xml文件2、創(chuàng)建Spring EHCache的配置xml文件配置文件代碼示例(調(diào)試通過):cacheName=dictCachecacheNames=dictCache*anagerflushingInterceptorcachingInterceptor 也可以使用注解的形式進行標(biāo)注緩存方法,不過要修改配置文件,詳見springmodules的文檔,這里就不提供了。緩存說明:1、方法不含有參數(shù)時間到期緩存失效;調(diào)用flush,緩存失效。2、方法中含有參數(shù)參數(shù)不同則每次都緩存,若緩存中存在相同對象,則調(diào)用緩存。當(dāng)調(diào)用flush,該id對應(yīng)的緩存都失效。當(dāng)緩存時間到期,該id對應(yīng)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論