Java中常用的緩存框架
0x01:Ehcache
Ehcache是一個Java實現(xiàn)的開源分布式緩存框架,EhCache可以有效地減輕數(shù)據(jù)庫的負(fù)載,可以讓數(shù)據(jù)保存在不同服務(wù)器的內(nèi)存中,在需要數(shù)據(jù)的時候可以快速存取。同時EhCache 擴(kuò)展非常簡單,官方提供的Cache配置方式有多種??梢月暶髋渲?、xml中配置、程序里配置或者調(diào)用構(gòu)造方法時傳入不同的參數(shù)。

官方網(wǎng)站
http://ehcache.org/
Ehcache有如下特點
- 存取速度非???,性能很不錯。
- 支持應(yīng)用多種緩存策略。
- 分級緩存,用戶可以指定哪些數(shù)據(jù)在硬盤中緩存,哪些數(shù)據(jù)在內(nèi)存中緩存。
- 可以通過RMI、可插入API等方式進(jìn)行分布式緩存。
- 具有緩存和緩存管理器的偵聽接口。
- 支持多緩存管理器實例,以及一個實例的多個緩存區(qū)域。
- 默認(rèn)提供Hibernate的緩存實現(xiàn)。
0x02:Cacheonix
Cacheonix同樣也是一個基于Java的分布式集群緩存系統(tǒng),它同樣可以方便的實現(xiàn)分布式緩存的部署。Cacheonix作為一款開源的分布式緩存框架,可以滿足中型企業(yè)規(guī)模的系統(tǒng)架構(gòu),對提升系統(tǒng)性能有非常棒的作用。
官方網(wǎng)站
http://www.cacheonix.com/
Cacheonix有如下特點
- 可靠的分布式 Java 緩存
- 通過復(fù)制實現(xiàn)高可用性
- 支持泛型的緩存 API
- 可與 ORM 框架集成
- 使用數(shù)據(jù)分區(qū)實現(xiàn)負(fù)載均衡
- 支持非多播網(wǎng)絡(luò)
- 高性能計算
- 快速的本地 Java 緩存
- 分布式鎖機制
0x03:JBoss Cache
JBoss Cache是一款基于Java的事務(wù)處理緩存系統(tǒng),它的目標(biāo)是構(gòu)建一個以Java框架為基礎(chǔ)的集群解決方案,可以是服務(wù)器應(yīng)用,也可以是Java SE應(yīng)用。
官方網(wǎng)站
http://jbosscache.jboss.org/
JBoss Cache有如下特點
- 集群高可用性
JBoss Cache是可復(fù)制的Cache,狀態(tài)總是和集群中的其它服務(wù)器同步保存。這使得任何存儲在JBoss Cache的狀態(tài)都能得到恢復(fù),即使因服務(wù)器崩潰或重啟。
- 集群的cache消除了瓶頸
JBoss Cache設(shè)計來緩存經(jīng)常被訪問到的Java對象,目的是動態(tài)地改進(jìn)應(yīng)用程序的性能。這使得移除數(shù)據(jù)訪問瓶頸更容易,例如數(shù)據(jù)庫連接。
JBoss Cache實例很注意遠(yuǎn)程Cache的更新和同步。
- 企業(yè)級
JBoss Cache是高級的、企業(yè)級數(shù)據(jù)網(wǎng)格解決方案,提供了如事務(wù)處理、回收和Cache載入等特征。
- 許可證
JBoss Cache基于LGPL許可證,100%開源。
0x04:OSCache
OSCache是個一個廣泛采用的高性能的J2EE緩存框架,OSCache能用于任何Java應(yīng)用程序的普通的緩存解決方案。
官方網(wǎng)站
http://www.opensymphony.com/oscache/
OSCache有如下特點
- 緩存任何對象。可以不受限制的緩存部分jsp頁面或HTTP請求,任何java對象都可以緩存。
- 擁有全面的API。OSCache API提供全面的程序來控制所有的OSCache特性。
- 永久緩存。緩存能隨意的寫入硬盤,因此允許昂貴的創(chuàng)建(expensive-to-create)數(shù)據(jù)來保持緩存,甚至能讓應(yīng)用重啟。
- 支持集群。集群緩存數(shù)據(jù)能被單個的進(jìn)行參數(shù)配置,不需要修改代碼
- 緩存記錄的過期-??梢院艽笙薅鹊目刂凭彺鎸ο蟮倪^期,包括可插入式的刷新策略(如果默認(rèn)性能不需要時)
0x05:Memcached
Memcached是一種基于內(nèi)存的key-value存儲,用來存儲小塊的任意數(shù)據(jù)(字符串、對象)。這些數(shù)據(jù)可以是數(shù)據(jù)庫調(diào)用、API調(diào)用或者是頁面渲染的結(jié)果。Memcached簡潔而強大。它的簡潔設(shè)計便于快速開發(fā),減輕開發(fā)難度,解決了大數(shù)據(jù)量緩存的很多問題。它的API兼容大部分流行的開發(fā)語言。本質(zhì)上,它是一個簡潔的key-value存儲系統(tǒng)。
官方網(wǎng)站:
http://memcached.org/
Memcached有如下特點
- 基于libevent的事件處理
- memcached不互相通信的分布式
- 協(xié)議簡單
- 內(nèi)置內(nèi)存存儲方式
0x06:J2Cache
J2Cache 是 OSChina 目前正在使用的兩級緩存框架。第一級緩存使用 Ehcache,第二級緩存使用 Redis 。由于大量的緩存讀取會導(dǎo)致 L2 的網(wǎng)絡(luò)成為整個系統(tǒng)的瓶頸,因此 L1 的目標(biāo)是降低對 L2 的讀取次數(shù)。該緩存框架主要用于集群環(huán)境中。單機也可使用,用于避免應(yīng)用重啟導(dǎo)致的 Ehcache 緩存數(shù)據(jù)丟失。
文檔
https://www.oschina.net/doc/652
另外J2Cache的代碼倉庫在碼云上,可以去搜索一下。更詳細(xì)介紹
https://my.oschina.net/javayou/blog/1931381
0x07:JetCache
JetCache是阿里開源的緩存框架。JetCache是一個基于java的緩存系統(tǒng)封裝,提供統(tǒng)一的API和注解簡化緩存的使用。JetCache提供了比SpringCache更強大的注解,可以原生的支持TTL、兩級緩存、分布式自動刷新,提供了Cache接口用于手工緩存操作。當(dāng)前有四個實現(xiàn),RedisCache、TairCache、CaffeineCache和一個簡易的LinkedHashMapCache,要添加新的實現(xiàn)也是非常簡單。
官方網(wǎng)站
https://github.com/alibaba/jetcache
JetCache有如下特點
- 通過統(tǒng)一的API訪問Cache系統(tǒng)
- 通過注解實現(xiàn)聲明式的方法緩存
- 通過注解創(chuàng)建并配置Cache實例
- 針對所有Cache實例和方法緩存的自動統(tǒng)計
- Key的生成策略和value的序列化策略是可以配置的
- 分布式緩存自動刷新,分布式鎖
- 異步Cache API
- Spring Boot支持