【问题标题】:NHibernate 2nd Level Cache Provider DifferencesNHibernate 2nd Level Cache Provider 差异
【发布时间】:2010-09-27 15:54:32
【问题描述】:

我已经使用 NHibernate 一段时间了,我仍然想知道二级缓存提供者之间有什么区别?

  • 有些表现更好\更差吗?
  • 什么流行,为什么流行?

为了清楚起见,我说的是:

  • NHibernate.Caches.MemCache
  • NHibernate.Caches.Prevalence
  • NHibernate.Caches.SharedCache
  • NHibernate.Caches.SysCache
  • NHibernate.Caches.SysCache2
  • NHibernate.Caches.Velocity

我相信还有其他人。

谢谢

【问题讨论】:

    标签: nhibernate caching


    【解决方案1】:

    有效地比较这些缓存提供程序可以归结为比较 memcached、流行度和速度等,而这与 NHibernate 并没有真正的关系。

    这里有一些理由(绝不是一个完整的列表)选择一个而不是其他的:

    如果您想保持简单并且不在场中运行您的应用,您可能需要使用在进程内运行的 SysCache/Prevalence。如果您使用 MS SQL Server,请使用 SysCache2。

    如果您需要跨多个缓存专用服务器的巨大缓存,您可能需要使用 memcached,它可以在 Linux 上运行,这样您就可以避免许可成本。

    如果您的应用程序在 Azure 上运行或已经使用 AppFabric,您可能需要使用 Velocity。

    就我个人而言,我更喜欢在比数据访问更高的级别上进行缓存(仅在真正需要时),以使缓存比实体更有意义和更有意义,并在缓存中包含更多的数据访问。在设计合理的系统中,使用装饰器或代理可以轻松实现缓存透明化。

    【讨论】:

    • 我不同意第一段。无论您如何编码,有些场景如果没有缓存可能会很糟糕。替代方案通常是某种形式的手动缓存,这通常对架构更不利。
    • @Diego:同意,这是一个有争议的观点。我更喜欢在更高层进行“手动缓存”,而不是缓存中的数据访问(例如繁重的处理/Web服务)。这种手动缓存 99% 的时间是装饰器或代理,因此不会给架构增加太多开销。
    • @Diego:顺便说一句,这将成为博客文章“NH 2 级缓存:它是什么以及何时/为什么/如何应用它”的绝佳主题;-)
    • 已添加到我的博客待办事项列表中;-) 关于更高级别的缓存,这取决于您要缓存的内容,IMO。缓存响应或高级图当然是有意义的,但实体是有问题的。
    • 很好的总结,我同意你关于不依赖缓存的观点,这里的所有开发人员都必须在关闭二级缓存的情况下进行开发。我们没有农场,但将来我们可能会运行 MS SQL Server,所以我将看看这 3 个选项,看看哪些对我有用。谢谢
    猜你喜欢
    • 2011-07-27
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 2012-05-25
    • 2011-07-12
    • 2020-03-03
    • 2011-03-09
    • 1970-01-01
    相关资源
    最近更新 更多