NHibernate和Memcached -教程/示例

本文关键字:示例 教程 Memcached NHibernate | 更新日期: 2023-09-27 17:50:41

我有Membase服务器安装了几个桶设置,我正在寻找一个很好的教程或例子,如何使用它作为NHibernate的第二级缓存。

我感兴趣的是一个样例配置会是什么样子,如果有什么我需要在代码中做,或者如果我可以处理它从我的NHibernate映射。

感谢您的帮助。

NHibernate和Memcached -教程/示例

在您的映射文件中,您需要包含这个属性:

<class name="ClassName" table="Table">
   <cache usage="read-write" />
   <!-- SNIP -->
</class>

选项包括读写(读提交隔离)、非严格读写(很少写入的对象,性能更好,但数据陈旧的可能性增加)或只读(从不更改的数据)。

然后,在你的web(或应用)配置中,你需要一个节来配置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中下载并引用一个dll。获取正确的缓存提供程序。memcached依赖于ICSharpCode。SharpZipLib和Memcached。ClientLibrary以及(s/b包含在下载中)

如果你正在使用流畅的NHibernate,在会话工厂的设置链中有一个。cache方法,你可以使用,尽管一些属性需要通过调用。exposeconfiguration手动设置。