Java Caching System
JCS(Java Caching System)是一個用分布式的緩存系統,是基于服務器的java應用程序。它是通過提供管理各種動態緩存數據來加速動態web應用。
JCS和其他緩存系統一樣,也是一個用于高速讀取,低速寫入的應用程序。
動態內容和報表系統能夠獲得更好的性能。
如果一個網站,有重復的網站結構,使用間歇性更新方式的數據庫(而不是連續不斷的更新數據庫),被重復搜索出相同結果的,就能夠通過執行緩存方式改進其性能和伸縮性。
官方網站 http://jakarta.apache.org/turbine/jcs/
EHCache
EHCache 是一個純java的分布式緩存,支持磁盤存儲,它具有以下特性:快速,簡單,為Hibernate2.1充當可插入的緩存,最小的依賴性,全面的文檔和測試。
官方網站 http://ehcache.sourceforge.net/
OSCache
OSCache是一個廣泛采用的高性能的J2EE緩存框架,OSCache能用于任何Java應用程序的普通的緩存解決方案。
OSCache有以下特點:
緩存任何對象,你可以不受限制的緩存部分jsp頁面或HTTP請求,任何java對象都可以緩存。
擁有全面的API--OSCache API給你全面的程序來控制所有的OSCache特性。
永久緩存--緩存能隨意的寫入硬盤,因此允許昂貴的創建(expensive-to-create)數據來保持緩存,甚至能讓應用重啟。
支持集群--集群緩存數據能被單個的進行參數配置,不需要修改代碼。
緩存記錄的過期--你可以有最大限度的控制緩存對象的過期,包括可插入式的刷新策略(如果默認性能不需要時)。
官方網站 http://www.opensymphony.com/oscache/
Cache4J
Cache4J是一個接口簡單,可以快速上手,基于BSD許可的開源緩存軟件。
Cache4J有以下特點:
暫只只是內存緩存;
多線程環境設計;
2種實現:synchronized, blocking;
支持LFU, LRU, FIFO算法。
支持磁盤存儲,分布式引用,以及LFU2, LRU2等算法將是Cache4J接下來要實現的功能;另外,該軟件的使用指南和API文檔均是俄文。
官方網站:http://cache4j.sourceforge.net/
JCache(FKache)
JCache是個開源程序,正在努力成為JSR-107開源規范,JSR-107規范已經很多年沒改變了。這個版本仍然是構建在最初的功能定義上。
官方網站 http://jcache.sourceforge.net/
ShiftOne
ShiftOne Java Object Cache是一個執行一系列嚴格的對象緩存策略的Javalib,就像一個輕量級的配置緩存工作狀態的框架。
官方網站 http://jocache.sourceforge.net/
SwarmCache
SwarmCache是一個簡單且有效的分布式緩存,它使用IP multicast與同一個局域網的其他主機進行通訊,是特別為集群和數據驅動web應用程序而設計的。SwarmCache能夠讓典型的讀操作大大超過寫操作的這類應用提供更好的性能支持???? SwarmCache使用JavaGroups來管理從屬關系和分布式緩存的通訊。
官方網站 http://swarmcache.sourceforge.net
TreeCache / JBossCache
JBossCache是一個復制的事務處理緩存,它允許你緩存企業級應用數據來更好的改善性能。緩存數據被自動復制,讓你輕松進行JBoss服務器之間的集群工作。JBossCache能夠通過JBoss應用服務或其他J2EE容器來運行一個MBean服務,當然,它也能獨立運行。
JBossCache包括兩個模塊:TreeCache和TreeCacheAOP。
TreeCache --是一個樹形結構復制的事務處理緩存。
TreeCacheAOP --是一個“面向對象”緩存,它使用AOP來動態管理POJO(Plain Old Java Objects)
注:AOP是OOP的延續,是Aspect Oriented Programming的縮寫,意思是面向方面編程。
官方網站 http://www.jboss.org/products/jbosscache
WhirlyCache
Whirlycache是一個快速的、可配置的、存在于內存中的對象的緩存。它能夠通過緩存對象來加快網站或應用程序的速度,否則就必須通過查詢數據庫或其他代價較高的處理程序來建立。
官方網站 https://whirlycache.dev.java.net/
Jive Cache
Jive論壇曾經是一個廣受歡迎的開放源碼的論壇項目,現在已經商業化了,它有很多值得我們學習的地方。jive 2.6.0 的緩存機制,把所要緩存的對象加到HashMap哈希映射表中,用兩個LinkedListedlist雙向鏈表分別維持著緩存對象和每個緩存對象的生命周期,如果一個緩存對象被訪問到,那么就把它放到鏈表的最前面,然后不定時的把要緩存對象的對象加入鏈表中,把過期對象刪除,如此反復。
官方網站 http://www.jivesoftware.com
OFBiz Cache
OFBiz是一個非常著名的開源項目,提供了創建基于最新J2EE/XML規范和技術標準,構建大中型企業級、跨平臺、跨數據庫、跨應用服務器的多層、分布式電子商務類WEB應用系統的框架。 OFBiz最主要的特點是OFBiz提供了一整套的開發基于Java的web應用程序的組件和工具。包括實體引擎, 服務引擎, 消息引擎, 工作流引擎, 規則引擎等。Ofbiz與Jive實現的Cache類似,只是Ofbiz中根本都不關心每個對象的Size,只關心總體的HashMap的Size;Jive為了實現雙向聯表,而在Ofbiz中用的是java.util.LinkedList。
官方網站 http://www.ofbiz.org/
附:cache4j_perfomance_tester對幾個常用Cache的性能測試報告:
[java] ---------------------------------------------------------------
[java] java.version=1.4.2_09
[java] java.vm.name=Java HotSpot(TM) Client VM
[java] java.vm.version=1.4.2-54
[java] java.vm.info=mixed mode
[java] java.vm.vendor="Apple Computer, Inc."
[java] os.name=Mac OS X
[java] os.version=10.4.5
[java] os.arch=ppc
[java] ---------------------------------------------------------------
[java] This test can take about 5-10 minutes. Please wait ...
[java] ---------------------------------------------------------------
[java] |GetPutRemoveT |GetPutRemove |Get |
[java] ---------------------------------------------------------------
[java] cache4j 0.4 |9410 |9053 |5865 |
[java] oscache 2.2 |28076 |30833 |8031 |
[java] ehcache 1.2 |8753 |7072 |3479 |
[java] jcs 1.2.7.0 |8806 |9522 |4097 |
[java] ---------------------------------------------------------------