いくつかのバケットをセットアップして Membase サーバーをインストールしましたが、これを NHibernate で第 2 レベルのキャッシュとして使用する方法の良いチュートリアルまたは例を探していました。
サンプル構成がどのようになるか、コードで何かする必要があるかどうか、または NHibernate マッピングからすべてを処理できるかどうかに興味があります。
ご協力ありがとうございます。
いくつかのバケットをセットアップして Membase サーバーをインストールしましたが、これを NHibernate で第 2 レベルのキャッシュとして使用する方法の良いチュートリアルまたは例を探していました。
サンプル構成がどのようになるか、コードで何かする必要があるかどうか、または NHibernate マッピングからすべてを処理できるかどうかに興味があります。
ご協力ありがとうございます。
マッピングファイルには、次のプロパティを含める必要があります。
<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の呼び出しを通じて手動で設定する必要があります。