我有一個安裝了幾個桶設置的Membase服務器,我正在尋找一個很好的教程或如何使用它作爲第二級緩存與NHibernate的例子。NHibernate和Memcached - 教程/例子
我對示例配置的樣子感興趣,如果我在代碼中需要做什麼,或者如果我可以從我的NHibernate映射中處理它,我感興趣。
感謝您的任何幫助。
我有一個安裝了幾個桶設置的Membase服務器,我正在尋找一個很好的教程或如何使用它作爲第二級緩存與NHibernate的例子。NHibernate和Memcached - 教程/例子
我對示例配置的樣子感興趣,如果我在代碼中需要做什麼,或者如果我可以從我的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手動設置。
我發現這個例子不完整。首先,您必須在某處安裝Memcached服務器(如果您想在Windows上作爲服務安裝,請參閱http://xrigher.info/php/how-to-install-memcache-on-windows上的部分說明-7-x64的與-瓦帕/)。當添加Memcached客戶端二進制文件時,我發現3.2的二進制文件對log4net.dll有依賴性,所以我必須將其與Memcached客戶端二進制文件一起復制。另外,添加過期密鑰會在我的項目中生成錯誤 – Mario 2012-04-11 19:33:45