4

99%読み取り専用のWebアプリケーションがあり、特定の間隔(10分ごとなど)でデータベースを更新する別のサービスがあります。このサービスは、アプリケーションに第2レベルのキャッシュを無効にするようにどのように指示できますか?それは実際に重要ですか?(古いデータが多すぎても実際には気にしません)キャッシュを無効にしない場合、レコードが更新されるまでに必要な時間(SysCacheを使用している場合)

4

2 に答える 2

9

特定のエンティティ、エンティティ タイプ、またはコレクションの第 2 レベル キャッシュを手動で破棄できます。

http://knol.google.com/k/fabio-maulo/nhibernate-chapter-16-improving/1nr4enxv3dpeq/19#から

第 2 レベルのキャッシュの場合、インスタンス、クラス全体、コレクション インスタンス、またはコレクション ロール全体のキャッシュされた状態を削除するために、ISessionFactory で定義されたメソッドがあります。

sessionFactory.Evict(typeof(Cat), catId); // 特定の猫を立ち退かせる
sessionFactory.Evict(typeof(Cat)); //すべての猫を立ち退かせる
sessionFactory.EvictCollection("Eg.Cat.Kittens", catId); //特定の子猫のコレクションを追い出す
sessionFactory.EvictCollection("Eg.Cat.Kittens"); //すべての子猫コレクションを削除
于 2010-06-07T12:11:52.223 に答える
4

古いデータを保持する可能性があることに問題がない場合は、デフォルトの有効期限を使い慣れたものに設定するだけで、設定が完了します。

例:

<property name="cache.default_expiration">120</property>

これにより、デフォルトの有効期限が 2 分に設定されるため、それより古い古いデータが表示されることはありません。

于 2010-06-06T21:30:25.347 に答える