10

いくつかのバケットをセットアップして Membase サーバーをインストールしましたが、これを NHibernate で第 2 レベルのキャッシュとして使用する方法の良いチュートリアルまたは例を探していました。

サンプル構成がどのようになるか、コードで何かする必要があるかどうか、または NHibernate マッピングからすべてを処理できるかどうかに興味があります。

ご協力ありがとうございます。

4

1 に答える 1

14

マッピングファイルには、次のプロパティを含める必要があります。

<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.Cachesからdllをダウンロードして参照する必要があります。memcachedは、ICSharpCode.SharpZipLibとMemcached.ClientLibraryにも依存します(ダウンロードに含まれるs / b)

流暢なNHibernateを使用している場合、使用できるセッションファクトリのセットアップチェーンに.Cacheメソッドがありますが、一部のプロパティは.ExposeConfigurationの呼び出しを通じて手動で設定する必要があります。

于 2011-04-23T17:51:50.163 に答える