NHibernate.Caches.MemCache web.config для времени истечения срока действия кеша

Я перехожу на Nhibernate 2.0 GA, но у меня проблемы с настройкой срока действия кеша в провайдере memcached.

Я вижу в источниках NHibernate.Caches.MemCache, что есть свойство для истечения срока действия и значение по умолчанию для 300 секунд.

Есть также свойства для областей кеша, но обработчик раздела конфигурации, похоже, не отображает их.

Есть ли другой способ установки времени истечения срока действия кеша, который не зависит от поставщика -

Вот функциональный раздел веб-конфигурации (очевидно, без настроек срока действия).

<memcache>
    <memcached host="127.0.0.1" port="11211"/>
    <!-- or multiples -->
</memcache>

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
    <session-factory>
        <property name="show_sql">true</property>
        <property name="connection.provider" >NHibernate.Connection.DriverConnectionProvider</property>
        <property name="dialect">NHibernate.Dialect.MsSql2000Dialect</property>
        <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
                <!--    <property name="hibernate.cache.provider_class" value="NHibernate.Caches.MemCache.MemCacheProvider,NHibernate.Caches.MemCache" /> -->
        <property name="connection.connection_string">Data Source=stage2.ripple6.com;Initial Catalog=r6stage;User Id=sa;Password=mworld7650;Application Name=Hibernate;</property>
        <property name="connection.isolation">ReadCommitted</property>
        <property name="cache.use_second_level_cache">true</property>
        <property name="cache.provider_class">NHibernate.Caches.MemCache.MemCacheProvider,NHibernate.Caches.MemCache</property>
        <property name="default_schema" >r6stage.dbo</property>
    </session-factory>

</hibernate-configuration>

person malsmith    schedule 09.12.2008    source источник


Ответы (3)


Используйте истечение срока.

<property name="expiration" >YOUR_INTERVAL_IN_SECONDS</property>

После этого, когда вы запустите приложение с логированием, вы увидите:

NHibernate.Caches.MemCache.MemCacheClient: 20:57:55,762 DEBUG MemCacheClient:0 - using expiration of YOUR_INTERVAL_IN_SECONDS seconds
person jozefsevcik    schedule 14.01.2009

Используйте default_expiration.

<property name="default_expiration" >YOUR_INTERVAL_IN_SECONDS</property>

Я видел в источнике, что значение срока действия по умолчанию установлено на 300 секунд. Но вы можете переопределить это значение, установив свойство default_expiration в конфигурационном файле NHibernate.

person golamrabbi    schedule 09.05.2011

Насколько я понимаю, время истечения срока действия кеша зависит от поставщика, поскольку некоторые поставщики кеша не поддерживают это. Кроме того, это означает, что у вас нет ситуации, когда значение 60 означает час в одних случаях и минуту в других.

person kͩeͣmͮpͥ ͩ    schedule 12.12.2008