天天看點

分布式緩存--EhCache

Ehcache可以對頁面、對象、資料進行緩存,支援叢集/分布式緩存,支援記憶體和磁盤的緩存,支援LRU、LFU和FIFO多種淘汰算法,可作為Hibernate的緩存插件,同時它也能提供基于Filter的Cache,該Filter可以緩存響應的内容并采用Gzip壓縮提高響應速度。

所需jar: ehcache-core,ehcache-web(主要針對頁面緩存)

頁面緩存主要用Filter過濾器對請求的url進行過濾,如果該url在緩存中出現。那麼頁面資料就從緩存對象中擷取,并以gzip壓縮後傳回。其速度是沒有壓縮緩存時速度的3-5倍,效率相當之高!其中頁面緩存的過濾器有CachingFilter,一般要擴充filter或是自定義Filter都繼承該CachingFilter。

CachingFilter功能可以對HTTP響應的内容進行緩存。這種方式緩存資料的粒度比較粗,例如緩存整張頁面。它的優點是使用簡單、效率高,缺點是不夠靈活,可重用程度不高。

EHCache使用SimplePageCachingFilter類實作Filter緩存。該類繼承自CachingFilter,有預設産生cache key的calculateKey()方法,該方法使用HTTP請求的URI和查詢條件來組成key。也可以自己實作一個Filter,同樣繼承CachingFilter類,然後覆寫calculateKey()方法,生成自定義的key。

CachingFilter輸出的資料會根據浏覽器發送的Accept-Encoding頭資訊進行Gzip壓縮。

http://blog.csdn.net/ibm_hoojo/article/details/7763991

http://www.docin.com/p-22141155.html

http://www.cnblogs.com/hoojo/archive/2012/07/12/2587556.html

http://www.cnblogs.com/hoojo/archive/2012/07/12/2587941.html

http://blog.csdn.net/angjunqiang/article/details/43155437

EhCache是一個純Java的程序内緩存架構,具有快速、精幹特點,是Hibernate中預設的CacheProvider。

主要特性:

快速

簡單

多種緩存政策

緩存資料有兩級:記憶體和磁盤

緩存資料會在虛拟機重新開機的過程中寫入磁盤

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

具有緩存和緩存管理器的監聽接口

支援多緩存管理器執行個體,以及一個執行個體多個緩存區域

提供Hibernate的緩存實作

系統緩存是位于應用程式與實體資料源之間,用于臨時存放複制資料的記憶體區域,目的是為了減少應用程式對實體資料源通路的次數,進而提高應用程式的運作性能. 緩存設想記憶體是有限的,緩存的時效性也是有限的,是以可以設定記憶體數量的大小,可以執行失效算法,可以在記憶體滿了的時候,按照最少通路等算法将緩存直接移除或切換到硬碟上。

為了安裝分布式緩存,你需要配置一個PeerProvider、一個CacheManagerPeerListener,它們對于一個CacheManager來說是全局的。每個進行分布式操作的cache都要添加一個cacheEventListener來傳送消息。

Ehcache進行叢集的時候有一個cache組的概念。每個cache都是其他cache的一個peer,沒有主cache的存在。

1、如何知道叢集環境中的其他緩存?

成員發現(Peer Discovery)

要使用一個内置的成員發現機制要在ehcache的配置檔案中指定cacheManagerPeerProviderFactory元素的class屬性為net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory。

兩種發現機制:

One:自動的成員發現

自動發現機制方式用TCP廣播機制來确定和維持一個廣播組。它隻需要一個簡單的配置可以自動的在組中添加和移除成員。

成員每秒向群組發送一個“心跳”。如果一個成員5秒都未發出信号它将被群組移除。如果發送“心跳”它将被添加進群組。

設定:在ehcache配置檔案中cacheManagerPeerProviderFactory的properties屬性設定:

繼續閱讀