1. 程式人生 > >Ehcache與redis比較

Ehcache與redis比較

EhCache 是一個純Java的程序內快取框架,具有快速、精幹等特點,是Hibernate中預設的CacheProvider

Ehcache是一種廣泛使用的開源Java分散式快取。主要面向通用快取,Java EE和輕量級容器。它具有記憶體和磁碟儲存,快取載入器,快取擴充套件,快取異常處理程式,一個gzip快取servlet過濾器,支援REST和SOAP api等特點。 Ehcache最初是由Greg Luck於2003年開始開發。2009年,該專案被Terracotta購買。軟體仍然是開源,但一些新的主要功能(例如,快速可重啟性之間的一致性的)只能在商業產品中使用,例如Enterprise EHCache and BigMemory。,維基媒體Foundationannounced目前使用的就是Ehcache技術。

主要的特性有: 1. 快速 2. 簡單 3. 多種快取策略 4. 快取資料有兩級:記憶體和磁碟,因此無需擔心容量問題 5. 快取資料會在虛擬機器重啟的過程中寫入磁碟 6. 可以通過RMI、可插入API等方式進行分散式快取 7. 具有快取和快取管理器的偵聽介面 8. 支援多快取管理器例項,以及一個例項的多個快取區域 9. 提供Hibernate的快取實現
Ehcache
在java專案廣泛的使用。它是一個開源的、設計於提高在資料從RDBMS中取出來的高花費、高延遲採取的一種快取方案。正因為Ehcache具有健壯性(基於java開發)、被認證(具有apache 2.0  license)、充滿特色(稍後會詳細介紹),所以被用於大型複雜分散式web application的各個節點中。
1.  夠快
Ehcache的發行有一段時長了,經過幾年的努力和不計其數的效能測試,Ehcache終被設計於large, high concurrency systems.
2. 夠簡單
開發者提供的介面非常簡單明瞭,從Ehcache的搭建到運用執行僅僅需要的是你寶貴的幾分鐘。其實很多開發者都不知道自己用在用Ehcache,Ehcache被廣泛的運用於其他的開源專案
比如:hibernate
3.夠袖珍
關於這點的特性,官方給了一個很可愛的名字small foot print ,一般Ehcache的釋出版本不會到2M,V 2.2.3  才 668KB。
4. 夠輕量
核心程式僅僅依賴
slf4j
這一個包,沒有之一! 5.好擴充套件 Ehcache提供了對大資料的記憶體和硬碟的儲存,最近版本允許多例項、儲存物件高靈活性、提供LRU、LFU、FIFO淘汰演算法,基礎屬性支援熱配置、支援的外掛多 6.監聽器 快取管理器監聽器 (CacheManagerListener)和 快取監聽器(CacheEvenListener),做一些統計或資料一致性廣播挺好用的 如何使用? 夠簡單就是Ehcache的一大特色,自然用起來just so easy! redis redis是在memcache之後編寫的,大家經常把這兩者做比較,如果說它是個key-value store 的話但是它具有豐富的資料型別,我想暫時把它叫做快取資料流中心,就像現在
物流中心
那樣,order、package、store、classification、distribute、end。現在還很流行的LAMP PHP架構 不知道和 redis+mysql 或者 redis + mongodb的效能比較(聽群裡的人說mongodb分片不穩定)。 先說說reidis的特性 1. 支援持久化 redis的本地持久化支援兩種方式:RDB和AOF。RDB 在redis.conf配置檔案裡配置持久化觸發器,AOF指的是redis沒增加一條記錄都會儲存到持久化檔案中(儲存的是這條記錄的生成命令),如果不是用redis做DB用的話還會不要開AOF ,資料太龐大了,重啟恢復的時候是一個巨大的工程! 2.豐富的資料型別 redis 支援 String 、Lists、sets、sorted sets、hashes 多種資料型別,新浪微博會使用redis做nosql主要也是它具有這些型別,時間排序、職能排序、我的微博、發給我的這些功能List 和 sorted set 的強大操作功能息息相關 3.高效能 這點跟memcache很想象,記憶體操作的級別是毫秒級的比硬碟操作秒級操作自然高效不少,較少了磁頭尋道、資料讀取、頁面交換這些高開銷的操作!這也是NOSQL冒出來的原因吧,應該是高效能 是基於RDBMS的衍生產品,雖然RDBMS也具有快取結構,但是始終在app層面不是我們想要的那麼操控的。 4.replication redis提供主從複製方案,跟mysql一樣增量複製而且複製的實現都很相似,這個複製跟AOF有點類似複製的是新增記錄命令,主庫新增記錄將新增指令碼傳送給從庫,從庫根據指令碼生成記錄,這個過程非常快,就看網路了,一般主從都是在同一個區域網,所以可以說redis的主從近似及時同步,同事它還支援一主多從,動態新增從庫,從庫數量沒有限制。 主從庫搭建,我覺得還是採用網狀模式,如果使用鏈式(master-slave-slave-slave-slave·····)如果第一個slave出現宕機重啟,首先從master 接收 資料恢復指令碼,這個是阻塞的,如果主庫資料幾TB的情況恢復過程得花上一段時間,在這個過程中其他的slave就無法和主庫同步了。 5.更新快 這點好像從我接觸到redis到目前為止 已經發了大版本就4個,小版本沒算過。redis作者是個非常積極的人,無論是郵件提問還是論壇發帖,他都能及時耐心的為你解答,維護度很高。有人維護的話,讓我們用的也省心和放心。目前作者對redis 的主導開發方向是redis的叢集方向。 所以如果希望簡單就用ehcache,如果開發任務比較複雜,希望得到比較多的支援什麼的就redis