我的Membase服务器安装了几个桶设置,我正在寻找一个很好的教程或示例如何使用它作为第二级缓存与NHibernate.
我对什么样的配置感兴趣,如果有什么我需要做的代码,或者我可以处理这一切从我的NHibernate映射.
感谢任何协助.
解决方法
在映射文件中,您需要包含属性:
<class name="ClassName" table="Table"> <cache usage="read-write" /> <!-- SNIP --> </class>
选项是读写(读取提交隔离),非限制读写(很少写入的对象,更好的性能,但是增加的陈旧数据的机会)或只读(永远不会更改的数据).
然后,在您的网络(或应用)配置中,您需要一个部分来配置memcached:
<configuration> <configSections> <!-- SNIP --> <section name="memcache" type="NHibernate.Caches.MemCache.MemCacheSectionHandler,NHibernate.Caches.MemCache" /> </configSections> <memcache> <memcached host="127.0.0.1" port="11211" weight="2" /> </memcache> <!-- SNIP --> </configuration>
最后,在你的会话工厂配置一定要使用:
<hibernate-configuration> <session-factory> <!-- SNIP --> <property name="expiration">300</property> <!--memcache uses seconds --> <property name="cache.provider_class">NHibernate.Caches.MemCache.MemCacheProvider,NHibernate.Caches.MemCache</property> <property name="cache.use_second_level_cache">true</property> <property name="cache.use_query_cache">false</property> <!-- true if you want to cache query results --> </session-factory> </hibernate-configuration>
当然,您将需要从相应版本的NHibernate.Caches下载并引用一个dll来获取正确的缓存提供程序. memcached还依赖于ICSharpCode.SharpZipLib和Memcached.ClientLibrary(下载中包含s / b)
如果您使用流畅的NHibernate,则可以使用会话工厂的安装链中的.Cache方法,尽管某些属性需要通过调用.ExposeConfiguration手动设置.