一、ehcahe的介紹
EhCache 是一個(gè)純Java的進(jìn)程內(nèi)緩存框架,具有高速、精干等特點(diǎn),是Hibernate中默認(rèn)的CacheProvider。Ehcache是一種廣泛使用的開(kāi)源Java分布式緩存。
主要面向通用緩存,Java EE和輕量級(jí)容器。
它具有內(nèi)存和磁盤(pán)存儲(chǔ)。緩存載入器,緩存擴(kuò)展,緩存異常處理程序,一個(gè)gzip緩存servlet過(guò)濾器。支持REST和SOAP api等特點(diǎn)。
優(yōu)點(diǎn):
1. 高速
2. 簡(jiǎn)單
3. 多種緩存策略
4. 緩存數(shù)據(jù)有兩級(jí):內(nèi)存和磁盤(pán),因此無(wú)需操心容量問(wèn)題
5. 緩存數(shù)據(jù)會(huì)在虛擬機(jī)重新啟動(dòng)的過(guò)程中寫(xiě)入磁盤(pán)
6. 能夠通過(guò)RMI、可插入API等方式進(jìn)行分布式緩存
7. 具有緩存和緩存管理器的偵聽(tīng)接口
8. 支持多緩存管理器實(shí)例,以及一個(gè)實(shí)例的多個(gè)緩存區(qū)域
9. 提供Hibernate的緩存實(shí)現(xiàn)
缺點(diǎn):
1. 使用磁盤(pán)Cache的時(shí)候很占用磁盤(pán)空間:這是由于DiskCache的算法簡(jiǎn)單。該算法簡(jiǎn)單也導(dǎo)致Cache的效率很高。它僅僅是對(duì)元素直接追加存儲(chǔ)。因此搜索元素的時(shí)候很的快。假設(shè)使用DiskCache的,在很頻繁的應(yīng)用中,很快磁盤(pán)會(huì)滿。
2. 不能保證數(shù)據(jù)的安全:當(dāng)突然kill掉java的時(shí)候,可能會(huì)產(chǎn)生沖突,EhCache的解決方法是假設(shè)文件沖突了。則重建cache。這對(duì)于Cache數(shù)據(jù)須要保存的時(shí)候可能不利。當(dāng)然,Cache僅僅是簡(jiǎn)單的加速。而不能保證數(shù)據(jù)的安全。假設(shè)想保證數(shù)據(jù)的存儲(chǔ)安全,能夠使用Bekeley DB Java Edition版本號(hào)。
這是個(gè)嵌入式數(shù)據(jù)庫(kù)。能夠確保存儲(chǔ)安全和空間的利用率。
EhCache的分布式緩存有傳統(tǒng)的RMI,1.5版的JGroups,1.6版的JMS。分布式緩存主要解決集群環(huán)境中不同的server間的數(shù)據(jù)的同步問(wèn)題。
使用Spring的AOP進(jìn)行整合,能夠靈活的對(duì)方法的返回結(jié)果對(duì)象進(jìn)行緩存。
以下將介紹Spring+EhCache具體實(shí)例。
二、具體實(shí)例解說(shuō)
本實(shí)例的環(huán)境 eclipse + maven + spring + ehcache + junit
2.1、相關(guān)依賴pom.xml
4.0.0 com.luo ehcache_project 0.0.1-SNAPSHOT 3.2.8.RELEASE 4.10 org.springframework spring-core ${spring.version} org.springframework spring-webmvc ${spring.version} org.springframework spring-context ${spring.version} org.springframework spring-context-support ${spring.version} org.springframework spring-aop ${spring.version} org.springframework spring-aspects ${spring.version} org.springframework spring-tx ${spring.version} org.springframework spring-jdbc ${spring.version} org.springframework spring-web ${spring.version} junit junit ${junit.version} test org.springframework spring-test ${spring.version} test net.sf.ehcache ehcache 2.8.2