从来没有使用过像这样的缓存.问题是我想从数据库中加载500,000条记录并快速选择/过滤邪恶的记录.
我正在考虑使用缓存,初步发现EHCache和OSCache,有什么意见吗?
从他们的发布页面来看,OSCache自2007年以来一直没有得到积极维护.这不是一件好事.另一方面,EhCache正在不断发展.仅仅因为这个原因,我会选择EhCache.
编辑2013年11月:与OpenSymphony的其他部分一样,OSCache已经死了.
他们都是非常可靠的项目.如果你有非常基本的缓存需求,其中任何一个都可能与另一个一样好.
如果可行,您可能还希望考虑在数据库查询中进行过滤.通常,使用返回较小结果集的调优查询将比向内存中加载500,000行然后过滤它们提供更好的性能.
我使用过JCS(http://jakarta.apache.org/jcs/),看起来很实用,也很容易以编程方式使用.
这有点取决于你的需求.如果你在一台机器上进行内存工作,那么ehcache将完美运行,假设你有足够的RAM或足够快的硬盘,这样溢出不会导致磁盘分页/抖动.如果你发现你需要实现可扩展性,即使这个特定的操作发生了很多,那么你可能想要进行聚类.来自JBoss的JGroups/TreeCache支持这一点,EHcache也是如此(我认为),我知道如果你将Ehcache与赤土陶器一起使用,它绝对有效,这是一个非常光滑的集成.这个答案并没有直接说明EHcache和OSCache的优点,所以这就是答案:EHcache似乎具有最大的惯性(曾经是默认的,众所周知的,主动开发,包括一个新的缓存服务器),OSCache似乎(至少在某一点上)具有更多的功能,但我认为,通过上面提到的选项,这些优势没有实际意义/取代.啊,我忘了提到的另一件事是数据的事务性很重要,您的要求将优化有效选择列表.
选择符合JSR 107的缓存,当您想要从一个实现迁移到另一个实现时,这将使您的工作变得轻松.具体问题是Ehcache,它是更受欢迎且广泛使用的Java缓存解决方案.我们广泛使用Ehcache,它适用于我们.