日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

Ehcache的基本概念

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

基本介紹:

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

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

特性:

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

特性一覽

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

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

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

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

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

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

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

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

9、分布式緩存
????? 從Ehcache 1.2開始,支持高性能的分布式緩存,兼具靈活性和擴(kuò)展性。分布式緩存的選項(xiàng)包括:通過Terracotta的緩存集群:設(shè)定和使用Terracotta模式的Ehcache緩存。緩存發(fā)現(xiàn)是自動(dòng)完成的,并且有很多選項(xiàng)可以用來調(diào)試緩存行為和性能。使用RMI、JGroups或者JMS來冗余緩存數(shù)據(jù):節(jié)點(diǎn)可以通過多播或發(fā)現(xiàn)者手動(dòng)配置。狀態(tài)更新可以通過RMI連接來異步或者同步完成。
Custom:一個(gè)綜合的插件機(jī)制,支持發(fā)現(xiàn)和復(fù)制的能力。可用的緩存復(fù)制選項(xiàng)。支持的通過RMI、JGroups或JMS進(jìn)行的異步或同步的緩存復(fù)制。可靠的分發(fā):使用TCP的內(nèi)建分發(fā)機(jī)制。
節(jié)點(diǎn)發(fā)現(xiàn):節(jié)點(diǎn)可以手動(dòng)配置或者使用多播自動(dòng)發(fā)現(xiàn),并且可以自動(dòng)添加和移除節(jié)點(diǎn)。對于多播阻塞的情況下,手動(dòng)配置可以很好地控制。分布式緩存可以任意時(shí)間加入或者離開集群。緩存可以配置在初始化的時(shí)候執(zhí)行引導(dǎo)程序員。BootstrapCacheLoaderFactory抽象工廠,實(shí)現(xiàn)了BootstrapCacheLoader接口(RMI實(shí)現(xiàn))。緩存服務(wù)端。Ehcache提供了一個(gè)Cache Server,一個(gè)war包,為絕大多數(shù)web容器或者是獨(dú)立的服務(wù)器提供支持。緩存服務(wù)端有兩組API:面向資源的RESTful,還有就是SOAP。客戶端沒有實(shí)現(xiàn)語言的限制。RESTful緩存服務(wù)器:Ehcached的實(shí)現(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ì)量的實(shí)現(xiàn)。阻塞緩存:它的機(jī)制避免了復(fù)制進(jìn)程并發(fā)操作的問題。SelfPopulatingCache在緩存一些開銷昂貴操作時(shí)顯得特別有用,它是一種針對讀優(yōu)化的緩存。它不需要調(diào)用者知道緩存元素怎樣被返回,也支持在不阻塞讀的情況下刷新緩存條目。CachingFilter:一個(gè)抽象、可擴(kuò)展的cache filter。SimplePageCachingFilter:用于緩存基于request URI和Query String的頁面。它可以根據(jù)HTTP request header的值來選擇采用或者不采用gzip壓縮方式將頁面發(fā)到瀏覽器端。你可以用它來緩存整個(gè)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命令:這是一種老的命令行模式,支持異步行為、容錯(cuò)。
兼容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)容還不錯(cuò),歡迎將生活随笔推薦給好友。