我之前的设置是一个 Web 服务器和一个数据库服务器。我使用 nhibernate 二级缓存来缓存内容,以避免大量调用数据库。这非常有效,因为我正在使用这个组件
nhibernate.caches.syscache
并添加此代码以打开二级缓存(使用常规 syscache 提供程序):
return configuration
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<ApplicationMap>().Conventions.Add(typeof(Conventions)))
.ExposeConfiguration(
c => {
c.SetProperty("proxyfactory.factory_class", proxyFactory);
c.SetProperty("cache.provider_class", "NHibernate.Caches.SysCache.SysCacheProvider, NHibernate.Caches.SysCache");
c.SetProperty("cache.use_second_level_cache", "true");
c.SetProperty("cache.use_query_cache", "true");
c.SetProperty("expiration", "86400");
})
.BuildSessionFactory();
我现在已经迁移到一个拥有多个网络服务器的新环境,我正在尝试理解它的含义(我仍然有一个数据库服务器)。
由于缓存之前存储在网络服务器上,现在看起来我在每个网络服务器上都有 2 个并行缓存,它们本身可能不同步,并可能导致更新过时等。
获得我以前拥有的缓存的好处,同时也利用此新设置提供的 Web 服务器负载平衡的弹性的最佳解决方案是什么?
Ayende blogged http://nhibernate.hibernatingrhinos.com/28/first-and-second-level-caching-in-nhibernate关于 NHibernate 中二级缓存的使用。您将需要在网络场场景中使用分布式缓存。例如 SysCache2(它依赖于 ASP.NET 缓存,可以配置为使用分布式提供程序)或 MemCache。这是一篇文章 http://blog.ovesens.net/2011/02/nhibernate-membase-caching-provider/说明如何配置 memcached。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)