나는 몇 개의 버킷 셋업으로 Membase 서버를 설치했고 NHibernate와 함께 2 단계 캐시로 사용하는 좋은 예제 또는 예제를 찾고있었습니다.NHibernate와 Memcached - 튜토리얼/예제
샘플 구성이 어떻게 생겼는지, 코드에서 수행해야 할 것이 있거나 NHibernate 매핑에서 처리 할 수 있는지 여부에 관심이 있습니다.
어떤 도움을 주셔서 감사합니다. 당신의 매핑 파일에서
나는 몇 개의 버킷 셋업으로 Membase 서버를 설치했고 NHibernate와 함께 2 단계 캐시로 사용하는 좋은 예제 또는 예제를 찾고있었습니다.NHibernate와 Memcached - 튜토리얼/예제
샘플 구성이 어떻게 생겼는지, 코드에서 수행해야 할 것이 있거나 NHibernate 매핑에서 처리 할 수 있는지 여부에 관심이 있습니다.
어떤 도움을 주셔서 감사합니다. 당신의 매핑 파일에서
, 당신이 재산을 포함해야합니다
<class name="ClassName" table="Table">
<cache usage="read-write" />
<!-- SNIP -->
</class>
옵션입니다 읽기 - 쓰기 (커밋 된 읽기 격리), 엄격 - 읽기 - 쓰기 (거의 기록되지 않은 객체, 더 나은 성능을하지만, 부실 데이터의 가능성 증가) 또는 읽기 전용 (변경되지 않는 데이터).
<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>
마지막으로, 세션 팩토리 구성에서 반드시 사용 :
그런 다음, 웹 (또는 앱) config (설정)에서 당신이 memcached를 구성 섹션을 필요 물론
<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 메소드가 있습니다 factory를 사용할 수 있지만 일부 속성은 .ExposeConfiguration을 호출하여 수동으로 설정해야합니다.
이 예제는 불완전합니다. 첫째, Memcached 서버를 어딘가에 설치해야합니다 (Windows 상자에 서비스로 설치하려는 경우 http://xrigher.info/php/how-to-install-memcache-on-windows의 지침 중 일부 참조). -7-x64-wamp /). Memcached 클라이언트 바이너리를 추가 할 때, 3.2 용 바이너리가 log4net.dll에 종속되어 있으므로 Memcached 클라이언트 바이너리와 함께 복사해야했습니다. 또한 만료 키를 추가하면 프로젝트에서 오류가 발생합니다. – Mario