【问题标题】:OSCache vs. EHCacheOSCache 与 EHCache
【发布时间】:2010-09-10 23:54:47
【问题描述】:

以前从未使用过这样的缓存。问题是我想从数据库中加载 500,000 多条记录并快速进行一些选择/过滤。

我正在考虑使用缓存,初步找到EHCacheOSCache,有什么意见吗?

【问题讨论】:

  • 为什么你认为使用缓存会比在数据库中选择/过滤更快?他们就是这样做的。 :)

标签: java caching ehcache oscache


【解决方案1】:

我主要使用 EhCache,因为它曾经是 Hibernate 的默认缓存提供程序。 Java-Source.net上有缓存解决方案列表。

我曾经有一个比较主要缓存解决方案的链接。如果我找到它,我会更新这个答案。

【讨论】:

    【解决方案2】:

    它们都是非常可靠的项目。如果您有非常基本的缓存需求,其中任何一个都可能与另一个一样好。

    如果可行,您可能还希望考虑在数据库查询中进行过滤。通常,与将 500,000 行加载到内存然后过滤它们相比,使用返回较小结果集的优化查询会给您带来更好的性能。

    【讨论】:

      【解决方案3】:

      这有点取决于您的需求。如果您在一台机器上在内存中进行工作,那么 ehcache 将完美运行,假设您有足够的 RAM 或足够快的硬盘,以便溢出不会导致磁盘分页/抖动。如果你发现你需要实现可伸缩性,即使这种特定操作发生了很多,那么你可能会想要进行集群。 JBoss 的 JGroups /TreeCache 支持这一点,EHcache 也是如此(我认为),而且我知道如果您将 Ehcache 与 terracotta 一起使用,它肯定会起作用,这是一个非常巧妙的集成。这个答案并没有直接说明 EHcache 和 OSCache 的优点,所以这里的答案是:EHcache 似乎具有最大的惯性(曾经是默认的、众所周知的、积极的开发,包括新的缓存服务器),而 OSCache 似乎(至少在某一点上)具有更多的功能,但我认为使用上面提到的选项,这些优势是没有实际意义的/被取代的。啊,我忘了提到的另一件事是数据的事务性很重要,您的要求将细化有效选择的列表。

      【讨论】:

        【解决方案4】:

        我使用过 JCS (http://jakarta.apache.org/jcs/),它看起来很可靠且易于以编程方式使用。

        【讨论】:

          【解决方案5】:

          无论哪种方式,我都建议将它们与 Spring 模块一起使用。 缓存对应用程序是透明的,并且缓存实现很容易交换。 除了 OSCache 和 EHCache,Spring Modules 还支持 Gigaspaces 和 JBoss 缓存。

          至于比较.... OSCache 更容易配置 EHCache 有更多的配置选项

          它们都坚如磐石,都支持镜像缓存,都与 Terracotta 一起工作,都支持内存和磁盘缓存。

          【讨论】:

            【解决方案6】:

            其他答案讨论了缓存的优缺点;但我想知道您是否真的从缓存中受益。目前还不太清楚您打算在这里做什么,以及为什么缓存会有好处:如果您有数据集供您使用,只需访问它即可。缓存仅有助于在其他独立任务之间重用事物。如果这是您正在做的事情,是的,缓存可以提供帮助。但是,如果它是一项可以承载其数据集的大任务,那么缓存将没有任何价值。

            【讨论】:

              【解决方案7】:

              从他们的releases page来看,OSCache 从 2007 年开始就没有得到积极的维护。这不是一件好事。另一方面,EhCache 正在不断开发中。仅出于这个原因,我会选择 EhCache。

              2013 年 11 月编辑:OSCache 与 OpenSymphony 的其余部分一样,已死。

              【讨论】:

              • +1 这是决定使用什么开源软件的一个非常重要的因素
              • opensymphony.comOpenSymphony 现已公开宣布他们已经死亡。
              【解决方案8】:

              我在几个带有 spring-modules 的 spring 项目中使用了 oscache,使用基于 aop 的配置。

              最近我想在一个 Spring 3.x 项目中使用 oscache + spring 模块,但发现不支持 spring-modules 基于注解的缓存(即使是 fork)。

              我最近发现了这个项目 -

              http://code.google.com/p/ehcache-spring-annotations/

              它支持 spring 3.x 以及使用 ehcache 的声明式基于注释的缓存。

              【讨论】:

                【解决方案9】:

                选择一个符合 JSR 107 的缓存,当您想从一种实现迁移到另一种实现时,这将使您的工作变得轻松。具体到 Ehcache 的问题,它是更流行和广泛使用的 Java 缓存解决方案。我们正在广泛使用 Ehcache,它对我们有用。

                【讨论】:

                  【解决方案10】:

                  OSCache 几乎已经死了,因为它在几年前就被废弃了。您可以看看 Cacheonix,它已经在积极开发中,我们刚刚发布了 v.2.2.2,支持 Web 层中的缓存。我是一名提交者,因此如果您有任何问题,可以联系我们。

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2012-12-11
                    • 1970-01-01
                    • 2011-08-03
                    • 1970-01-01
                    • 2013-04-19
                    • 2011-01-26
                    相关资源
                    最近更新 更多