首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

【讨论】JAVA缓存讨论与比较解决方法

2012-03-23 
【讨论】JAVA缓存讨论与比较准备在一段时间里讨论一个话题,大家踊跃发言吧,不相关回复直接删除。这次讨论,大

【讨论】JAVA缓存讨论与比较
准备在一段时间里讨论一个话题,大家踊跃发言吧,不相关回复直接删除。

这次讨论,大家介绍介绍自己在项目开发的各个部分应该怎么合理的使用cache的经验,使用各种cache的心得。我先起个头,列举下大概有的一些framework。

JBossCache/TreeCache
JBossCache是一个复制的事务处理缓存,它允许你缓存企业级应用数据来更好的改善性能。缓存数据被自动复制,让你轻松进行Jboss服务器之间的集群工作。JBossCache能够通过Jboss应用服务或其他J2EE容器来运行一个Mbean服务,当然,它也能独立运行。 JBossCache包括两个模块:TreeCache和TreeCacheAOP。 TreeCache --是一个树形结构复制的事务处理缓存。 TreeCacheAOP --是一个“面向对象”缓存,它使用AOP来动态管理POJO

OSCache
OSCache标记库由OpenSymphony设计,它是一种开创性的JSP定制标记应用,提供了在现有JSP页面之内实现快速内存缓冲的功能。OSCache是个一个广泛采用的高性能的J2EE缓存框架,OSCache能用于任何Java应用程序的普通的缓存解决方案。OSCache有以下特点:缓存任何对象,你可以不受限制的缓存部分jsp页面或HTTP请求,任何java对象都可以缓存。拥有全面的API--OSCache API给你全面的程序来控制所有的OSCache特性。永久缓存--缓存能随意的写入硬盘,因此允许昂贵的创建(expensive-to-create)数据来保持缓存,甚至能让应用重启。支持集群--集群缓存数据能被单个的进行参数配置,不需要修改代码。缓存记录的过期--你可以有最大限度的控制缓存对象的过期,包括可插入式的刷新策略(如果默认性能不需要时)。

JCACHE
JCACHE是一种即将公布的标准规范(JSR 107),说明了一种对Java对象临时在内存中进行缓存的方法,包括对象的创建、共享访问、假脱机(spooling)、失效、各JVM的一致性等。它可被用于缓存JSP内最经常读取的数据,如产品目录和价格列表。利用JCACHE,多数查询的反应时间会因为有缓存的数据而加快(内部测试表明反应时间大约快15倍)。 

Ehcache
Ehcache出自Hibernate,在Hibernate中使用它作为数据缓存的解决方案。

Java Caching System
JCS是Jakarta的项目Turbine的子项目。它是一个复合式的缓冲工具。可以将对象缓冲到内存、硬盘。具有缓冲对象时间过期设定。还可以通过JCS构建具有缓冲的分布式构架,以实现高性能的应用。 对于一些需要频繁访问而每访问一次都非常消耗资源的对象,可以临时存放在缓冲区中,这样可以提高服务的性能。而JCS正是一个很好的缓冲工具。缓冲工具对于读操作远远多于写操作的应用性能提高非常显著。 

SwarmCache
SwarmCache是一个简单而功能强大的分布式缓存机制。它使用IP组播来有效地在缓存的实例之间进行通信。它是快速提高集群式Web应用程序的性能的理想选择。

ShiftOne
ShiftOne Object Cache这个Java库提供了基本的对象缓存能力。实现的策略有先进先出(FIFO),最近使用(LRU),最不常使用(LFU)。所有的策略可以最大化元素的大小,最大化其生存时间。

WhirlyCache
Whirlycache是一个快速的、可配置的、存在于内存中的对象的缓存。它能够通过缓存对象来加快网站或应用程序的速度,否则就必须通过查询数据库或其他代价较高的处理程序来建立。

Jofti
Jofti可对在缓存层中(支持EHCache,JBossCache和OSCache)的对象或在支持Map接口的存储结构中的对象进行索引与搜索。这个框架还为对象在索引中的增删改提供透明的功能同样也为搜索提供易于使用的查询功能。

cache4j
cache4j是一个有简单API与实现快速的Java对象缓存。它的特性包括:在内存中进行缓存,设计用于多线程环境,两种实现:同步与阻塞,多种缓存清除策略:LFU, LRU, FIFO,可使用强引用(strong reference)与软引用(soft reference)存储对象。

Open Terracotta
一个JVM级的开源群集框架,提供:HTTP Session复制,分布式缓存,POJO群集,跨越群集的JVM来实现分布式应用程序协调(采用代码注入的方式,所以你不需要修改任何)。



来至于(http://www.open-open.com/13.htm)

[解决办法]
只弄过EHCache,还比较好用,它的文档也还不错。可以配置集群。
[解决办法]
OsCache 用过,没发现太大问题,做页面缓冲很好。

EHCache, 在JPA应用中,他竟然每个类生成一个线程来监测,被我干掉了!

[解决办法]
hibernate的二级缓存既可以使用ehcache也可以使用oscache吧
[解决办法]
OSCache 好用,Ui层,对象层,数据层都可以缓存,文档也不错,可控制性也不错
推荐
[解决办法]
一直是Ehcache,在hibernate深入浅出中见到过其他cache的介绍。不过没动过心眼~~~
一会test下oscache~~再来发表意见~~
[解决办法]
接触过的项目中也用到了OSCache ,效果还不错
[解决办法]
又是一笔财富,,,,,


Thank you!!!!!!!!
[解决办法]
HOHO``刚接触框架呢.现在只知道写连接池和线程池,都是缓存的原理吧.
[解决办法]
只用过Ehcache,Hibernate就是用的Ehcache。
cache4j正在捣鼓中。
[解决办法]
$%^$#
[解决办法]
要说缓存的话,还有个原始点的...WeakHashMap


[解决办法]
在我的系统中是OSCache做缓存,对别人也是推荐用它.

我是做 java 代码自动化生成工具的,对快速开发有研究的请进 http://yoolive.com,希望探讨!
[解决办法]

探讨
只用过Ehcache,Hibernate就是用的Ehcache。
cache4j正在捣鼓中。

[解决办法]
在系统中简单用过Hibernate集成的Ehcache,
其实我觉得对于很多一般的应用来说,没有必要搞得这么大,这么复杂。我有些时候是通过静态Map变量来处理缓存的,虽然丑陋。但是简单实用。哈哈
[解决办法]
正在研究oscache
[解决办法]
你说的这些我都没有用过,没什么经验.
不过我说说大家使用缓存的理由吧,也就是说什么情况下需要缓存,至于具体实现,其实每个人都可以自己去做最适合自己的实现,本身并不是一个复杂的东西.

我觉得缓存就是要对那些需要频繁访问,但是数据本身不会频繁变化的数据进行一个在内存中的copy的保存.
然后再由一个控制器对这个copy定期进行与真实数据的更新.

所以,最简单的实现,就是用一个Hashtable对象保存这些数据.
然后启动一个线程定时更新.
[解决办法]
接触不多 只用过OSCache
没深入研究过
感觉配置和使用比较简单易用

[解决办法]
都不懂,学习
[解决办法]
o用过oscache 感觉还可以!!!
[解决办法]
学习了
[解决办法]
对不住楼主了啊,被我忽悠一回,唉,我也是被忽悠了


Ehcache用过,做为Hibernate的二级缓存,感觉一般吧,主要我比较菜,没用到什么复杂的功能,介于这个原因后来就改用WhirlyCache了,文档少的可怜,但没关系因为代码也少得可怜,呵呵.
[解决办法]
都没有用过.
学习学习...................

热点排行