NHibernate 是用于 .NET 应用程序的流行对象关系映射 (ORM) 解决方案,因为它简化了您的数据库编程。 因此,许多高流量应用程序使用 NHibernate,因此面临数据库中的可伸缩性瓶颈。
为了解决这个问题,NHibernate 提供了一个缓存基础设施,以便应用程序可以使用内存中的缓存存储,并防止在如此高的请求负载下耗尽他们的数据库。 NHibernate缓存包括一级缓存和二级缓存。
NCache 更多信息 NHibernate 缓存文档 使用 Dapper Micro-ORM NCache
NHibernate 一级缓存及其局限性
NHibernate 第一级(第一级)缓存提供与会话对象关联的基本独立(进程内)缓存,并且仅限于当前会话。 默认情况下,此第一级缓存会减少每个会话对数据库的 SQL 查询数。 但是,这种一级缓存有很多限制,如下所示:
- 每个进程都有自己的一级缓存,它与其他一级缓存不同步,这使得数据完整性成为一个难题。
- 缓存大小仅限于进程内存,无法扩展。
- 工作进程回收导致缓存被刷新。 然后,您必须重新加载它,这会降低您的应用程序性能。
NCache 更多信息 将数据库与 NHibernate 同步 NHibernate 查询缓存
解决方案:NHibernate 的分布式缓存
NHibernate 二级缓存存在于会话工厂中 级别,这意味着多个用户会话可以访问共享缓存。 此外,NHibernate 二级缓存具有可插入架构,因此您无需任何编程即可将第三方分布式缓存插入其中。 NCache 已经实施 NHibernate 二级缓存提供程序 您可以将其用作 NHibernate 的分布式缓存,而无需更改任何代码。
以下示例向您展示了如何使用 NCache 在您的 NHibernate 应用程序中作为其二级缓存:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<hibernate-configuration> <session-factory> <property name="cache.provider_class">Alachisoft.NCache.Integrations.NHibernate.Cache.NCacheProvider, Alachisoft.NCache.Integrations.NHibernate.Cache </property> <property name="proxyfactory.factory_class"> NHibernate.Bytecode.DefaultProxyFactoryFactory, NHibernate </property> <property name="cache.use_second_level_cache">true </property> </session-factory> </hibernate-configuration> <ncache> <cache-regions> <region name="AbsoluteExpirationRegion" cache-name="myCache" priority="Default" expiration-type="sliding" expiration-period="180" use-async="false"> <region name="default" cache-name="myCache" priority="default" expiration-type="none" expiration-period="0"> </region></region></cache-regions> </ncache> |
这里有一些好处 NCache 作为 NHibernate 二级缓存:
- NCache 跨进程和服务器同步: NCache 是跨多个服务器共享的缓存。 这可确保缓存在多个服务器之间保持一致,并且所有缓存更新都正确同步,从而避免数据完整性问题。
- 可扩展缓存大小: NCache 将所有缓存服务器的内存汇集在一起。 因此,您可以通过简单地将更多服务器添加到缓存集群来增加缓存大小。 这意味着您的缓存可以增长到 100 GB 甚至 TB。
- 应用进程回收不影响缓存: 您的应用程序进程变得无状态,因为所有数据都在进程外分布式缓存中。 所以,应用进程回收对缓存没有影响。
- 处理更大事务负载的线性可扩展性: 您可以管理更大的事务负载,而不必担心数据库会成为瓶颈。 这种性能是可能的,因为分布式缓存可以线性扩展并将您的数据库流量减少多达 90%。
- 使用客户端缓存在进程内存储数据: NCache 提供对在工作进程中运行的客户端缓存、同步本地缓存或缓存顶部缓存的支持。 您可以使用它在您的 NHibernate 应用程序中获得更高的性能。
NCache 更多信息 休眠& NCache 使用 NHibernate Cache- 视频
结论!
如您所见,分布式缓存如 NCache 使您能够使用 NHibernate 并且仍然在多服务器配置中运行您的应用程序。 您还可以通过使用扩展您的应用程序并处理高事务负载 NCache 作为 NHibernate 二级缓存。 下载完整的 60 天试用版 NCache Enterprise 并亲自尝试一下。