2011-04-19 2 views
10

나는 몇 개의 버킷 셋업으로 Membase 서버를 설치했고 NHibernate와 함께 2 단계 캐시로 사용하는 좋은 예제 또는 예제를 찾고있었습니다.NHibernate와 Memcached - 튜토리얼/예제

샘플 구성이 어떻게 생겼는지, 코드에서 수행해야 할 것이 있거나 NHibernate 매핑에서 처리 할 수 ​​있는지 여부에 관심이 있습니다.

어떤 도움을 주셔서 감사합니다. 당신의 매핑 파일에서

답변

14

, 당신이 재산을 포함해야합니다

<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을 호출하여 수동으로 설정해야합니다.

+0

이 예제는 불완전합니다. 첫째, Memcached 서버를 어딘가에 설치해야합니다 (Windows 상자에 서비스로 설치하려는 경우 http://xrigher.info/php/how-to-install-memcache-on-windows의 지침 중 일부 참조). -7-x64-wamp /). Memcached 클라이언트 바이너리를 추가 할 때, 3.2 용 바이너리가 log4net.dll에 종속되어 있으므로 Memcached 클라이언트 바이너리와 함께 복사해야했습니다. 또한 만료 키를 추가하면 프로젝트에서 오류가 발생합니다. – Mario