1

Nhibernate 2.0 GA に移行していますが、memcached プロバイダーでのキャッシュ有効期限の設定に問題があります。

NHibernate.Caches.MemCache ソースには、有効期限のプロパティと 300 秒のデフォルト値があることがわかります。

キャッシュ領域のプロパティもありますが、構成セクション ハンドラーはそれらをマップしていないようです。

プロバイダー固有ではない、キャッシュの有効期限を設定する他の方法はありますか -

これは機能的な Web 構成セクションです (明らかに有効期限の設定はありません)。

<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>
4

3 に答える 3

1

default_expiration を使用します。

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

デフォルトの有効期限の値が 300 秒に設定されていることをソースで確認しました。ただし、NHibernate 構成ファイルから default_expiration プロパティを設定することで、この値をオーバーライドできます。

于 2011-05-09T06:26:15.530 に答える
0

私が理解している限り、一部のキャッシュ プロバイダーはこれをサポートしていないため、キャッシュの有効期限はプロバイダー固有です。また、60 という値が場合によっては 1 時間を意味し、他の場合には 1 分を意味するという状況がないことを意味します。

于 2008-12-12T15:22:32.170 に答える
-1

有効期限を使用します。

<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
于 2009-01-14T19:59:50.600 に答える