NHibernate 2nd Level Cache Provider 的差异

标签 nhibernate caching

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

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

  • 为了清楚起见,我正在谈论:
  • NHibernate.Caches.MemCache
  • NHibernate.Caches.Prevalence
  • NHibernate.Caches.SharedCache
  • NHibernate.Caches.SysCache
  • NHibernate.Caches.SysCache2
  • NHibernate.Caches.Velocity

  • 我相信还有其他人。

    谢谢

    最佳答案

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

    以下是选择一个而不是其他的一些原因(绝不是一个完整的列表):

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

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

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

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

    关于NHibernate 2nd Level Cache Provider 的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3805528/

    相关文章:

    nhibernate - 推荐的 CaSTLe Windsor/NHibernate 堆栈?

    asp.net-mvc - ASP.NET MVC : Clear an action's cache from another action

    NHibernate:在调用flush进行插入操作时接收到超出范围的索引

    ruby-on-rails - Rails.cache.clear 某些键名?

    gradle - 删除Gradle的构建缓存并构建后,某些任务仍然标记为FROM-CACHE

    postgresql - 缓存廉价但频繁的数据库查询

    c# - 跨云服务的 Azure(共存或专用)缓存

    NHibernate 1 到 0 或 1 到 1

    c# - NHibernate,添加子项时如果不存在则添加父项

    nhibernate - NHibernate入门的最佳方法是什么?