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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Ehcache的基本概念

發(fā)布時間:2025/7/14 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Ehcache的基本概念 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

基本介紹:

??????? Ehcache是一種廣泛使用的開源Java分布式緩存。主要面向通用緩存,Java EE和輕量級容器。它具有內(nèi)存和磁盤存儲,緩存加載器,緩存擴展,緩存異常處理程序,一個gzip緩存servlet過濾器,支持REST和SOAP api等特點。

??????? Ehcache 是現(xiàn)在最流行的純Java開源緩存框架,配置簡單、結(jié)構(gòu)清晰、功能強大,最初知道它,是從Hibernate的緩存開始的。網(wǎng)上中文的EhCache材料以簡單介紹和配置方法居多,如果你有這方面的問題,請自行g(shù)oogle;對于API,官網(wǎng)上介紹已經(jīng)非常清楚,請參見官網(wǎng);但是很少見到特性說明和對實現(xiàn)原理的分析,因此在這篇文章里面,我會詳細(xì)介紹和分析EhCache的特性,加上一些自己的理解和思考,希望對緩存感興趣的朋友有所收獲。

特性:

1. 快速 2. 簡單 3. 多種緩存策略 4. 緩存數(shù)據(jù)有兩級:內(nèi)存和磁盤,因此無需擔(dān)心容量問題 5. 緩存數(shù)據(jù)會在虛擬機重啟的過程中寫入磁盤 6. 可以通過RMI、可插入API等方式進(jìn)行分布式緩存 7. 具有緩存和緩存管理器的偵聽接口 8. 支持多緩存管理器實例,以及一個實例的多個緩存區(qū)域 9. 提供Hibernate的緩存實現(xiàn)

特性一覽

1、快速輕量
????? 過去幾年,諸多測試表明Ehcache是最快的Java緩存之一。Ehcache的線程機制是為大型高并發(fā)系統(tǒng)設(shè)計的。大量性能測試用例保證Ehcache在不同版本間性能表現(xiàn)得一致性。很多用戶都不知道他們 正在用Ehcache,因為不需要什么特別的配置。API易于使用,這就很容易部署上線和運行。很小的jar包,Ehcache 2.2.3才668kb。最小的依賴:唯一的依賴就是SLF4J了。

2、伸縮性
???? 緩存在內(nèi)存和磁盤存儲可以伸縮到數(shù)G,Ehcache為大數(shù)據(jù)存儲做過優(yōu)化。大內(nèi)存的情況下,所有進(jìn)程可以支持?jǐn)?shù)百G的吞吐。為高并發(fā)和大型多CPU服務(wù)器做優(yōu)化。線程安全和性能總是一對矛盾,Ehcache的線程機制設(shè)計采用了Doug Lea的想法來獲得較高的性能。單臺虛擬機上支持多緩存管理器。通過Terracotta服務(wù)器矩陣,可以伸縮到數(shù)百個節(jié)點。

3、靈活性
????? Ehcache 1.2具備對象API接口和可序列化API接口。不能序列化的對象可以使用除磁盤存儲外Ehcache的所有功能。除了元素的返回方法以外,API都是統(tǒng)一的。只有這兩個方法不一致:getObjectValue和getKeyValue。這就使得緩存對象、序列化對象來獲取新的特性這個過程很簡單。支持基于Cache和基于Element的過期策略,每個Cache的存活時間都是可以設(shè)置和控制的。
提供了LRU、LFU和FIFO緩存淘汰算法,Ehcache 1.2引入了最少使用和先進(jìn)先出緩存淘汰算法,構(gòu)成了完整的緩存淘汰算法。提供內(nèi)存和磁盤存儲,Ehcache和大多數(shù)緩存解決方案一樣,提供高性能的內(nèi)存和磁盤存儲。動態(tài)、運行時緩存配置,存活時間、空閑時間、內(nèi)存和磁盤存放緩存的最大數(shù)目都是可以在運行時修改的。

4、標(biāo)準(zhǔn)支持
????? Ehcache提供了對JSR107 JCACHE API最完整的實現(xiàn)。因為JCACHE在發(fā)布以前,Ehcache的實現(xiàn)(如net.sf.jsr107cache)已經(jīng)發(fā)布了。實現(xiàn)JCACHE API有利于到未來其他緩存解決方案的可移植性。Ehcache的維護(hù)者Greg Luck,正是JSR107的專家委員會委員。

5、可擴展性
???? 監(jiān)聽器可以插件化。Ehcache 1.2提供了CacheManagerEventListener和CacheEventListener接口,實現(xiàn)可以插件化,并且可以在ehcache.xml里配置。節(jié)點發(fā)現(xiàn),冗余器和監(jiān)聽器都可以插件化。分布式緩存,從Ehcache 1.2開始引入,包含了一些權(quán)衡的選項。Ehcache的團隊相信沒有什么是萬能的配置。實現(xiàn)者可以使用內(nèi)建的機制或者完全自己實現(xiàn),因為有完整的插件開發(fā)指南。
緩存的可擴展性可以插件化。創(chuàng)建你自己的緩存擴展,它可以持有一個緩存的引用,并且綁定在緩存的生命周期內(nèi)。緩存加載器可以插件化。創(chuàng)建你自己的緩存加載器,可以使用一些異步方法來加載數(shù)據(jù)到緩存里面。緩存異常處理器可以插件化。創(chuàng)建一個異常處理器,在異常發(fā)生的時候,可以執(zhí)行某些特定操作。

6、應(yīng)用持久化
???? 在VM重啟后,持久化到磁盤的存儲可以復(fù)原數(shù)據(jù)。Ehcache是第一個引入緩存數(shù)據(jù)持久化存儲的開源Java緩存框架。緩存的數(shù)據(jù)可以在機器重啟后從磁盤上重新獲得。
根據(jù)需要將緩存刷到磁盤。將緩存條目刷到磁盤的操作可以通過cache.flush()方法來執(zhí)行,這大大方便了Ehcache的使用。

7、監(jiān)聽器
???? 緩存管理器監(jiān)聽器。允許注冊實現(xiàn)了CacheManagerEventListener接口的監(jiān)聽器:notifyCacheAdded()notifyCacheRemoved()緩存事件監(jiān)聽器。允許注冊實現(xiàn)了CacheEventListener接口的監(jiān)聽器,它提供了許多對緩存事件發(fā)生后的處理機制:notifyElementRemoved/Put/Updated/Expired

8、開啟JMX
????? Ehcache的JMX功能是默認(rèn)開啟的,你可以監(jiān)控和管理如下的MBean:CacheManager、Cache、CacheConfiguration、CacheStatistics

9、分布式緩存
????? 從Ehcache 1.2開始,支持高性能的分布式緩存,兼具靈活性和擴展性。分布式緩存的選項包括:通過Terracotta的緩存集群:設(shè)定和使用Terracotta模式的Ehcache緩存。緩存發(fā)現(xiàn)是自動完成的,并且有很多選項可以用來調(diào)試緩存行為和性能。使用RMI、JGroups或者JMS來冗余緩存數(shù)據(jù):節(jié)點可以通過多播或發(fā)現(xiàn)者手動配置。狀態(tài)更新可以通過RMI連接來異步或者同步完成。
Custom:一個綜合的插件機制,支持發(fā)現(xiàn)和復(fù)制的能力。可用的緩存復(fù)制選項。支持的通過RMI、JGroups或JMS進(jìn)行的異步或同步的緩存復(fù)制。可靠的分發(fā):使用TCP的內(nèi)建分發(fā)機制。
節(jié)點發(fā)現(xiàn):節(jié)點可以手動配置或者使用多播自動發(fā)現(xiàn),并且可以自動添加和移除節(jié)點。對于多播阻塞的情況下,手動配置可以很好地控制。分布式緩存可以任意時間加入或者離開集群。緩存可以配置在初始化的時候執(zhí)行引導(dǎo)程序員。BootstrapCacheLoaderFactory抽象工廠,實現(xiàn)了BootstrapCacheLoader接口(RMI實現(xiàn))。緩存服務(wù)端。Ehcache提供了一個Cache Server,一個war包,為絕大多數(shù)web容器或者是獨立的服務(wù)器提供支持。緩存服務(wù)端有兩組API:面向資源的RESTful,還有就是SOAP。客戶端沒有實現(xiàn)語言的限制。RESTful緩存服務(wù)器:Ehcached的實現(xiàn)嚴(yán)格遵循RESTful面向資源的架構(gòu)風(fēng)格。SOAP緩存服務(wù)端:Ehcache RESTFul Web Services API暴露了單例的CacheManager,他能在ehcache.xml或者IoC容器里面配置。
標(biāo)準(zhǔn)服務(wù)端包含了內(nèi)嵌的Glassfish web容器。它被打成了war包,可以任意部署到支持Servlet 2.5的web容器內(nèi)。Glassfish V2/3、Tomcat 6和Jetty 6都已經(jīng)經(jīng)過了測試。

10、搜索
?????? 標(biāo)準(zhǔn)分布式搜索使用了流式查詢接口的方式,請參閱文檔。

11、Java EE和應(yīng)用緩存
?????? 為普通緩存場景和模式提供高質(zhì)量的實現(xiàn)。阻塞緩存:它的機制避免了復(fù)制進(jìn)程并發(fā)操作的問題。SelfPopulatingCache在緩存一些開銷昂貴操作時顯得特別有用,它是一種針對讀優(yōu)化的緩存。它不需要調(diào)用者知道緩存元素怎樣被返回,也支持在不阻塞讀的情況下刷新緩存條目。CachingFilter:一個抽象、可擴展的cache filter。SimplePageCachingFilter:用于緩存基于request URI和Query String的頁面。它可以根據(jù)HTTP request header的值來選擇采用或者不采用gzip壓縮方式將頁面發(fā)到瀏覽器端。你可以用它來緩存整個Servlet頁面,無論你采用的是JSP、velocity,或者其他的頁面渲染技術(shù)。SimplePageFragmentCachingFilter:緩存頁面片段,基于request URI和Query String。在JSP中使用jsp:include標(biāo)簽包含。已經(jīng)使用Orion和Tomcat測試過,兼容Servlet 2.3、Servlet 2.4規(guī)范。Cacheable命令:這是一種老的命令行模式,支持異步行為、容錯。
兼容Hibernate,兼容Google App Engine。基于JTA的事務(wù)支持,支持事務(wù)資源管理,二階段提交和回滾,以及本地事務(wù)。

?

轉(zhuǎn)載于:https://www.cnblogs.com/guojunjie/p/7161562.html

總結(jié)

以上是生活随笔為你收集整理的Ehcache的基本概念的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。