外部更新を備えたNhibernateの第2レベルのキャッシュ
-
24-10-2019 - |
質問
特定の間隔でデータベースを更新する別のサービスを使用して、99%の読み取り専用のWebアプリケーションを持っています(10分ごとなど)。このサービスは、アプリケーションにセカンドレベルのキャッシュを無効にするようにどのように指示できますか?それは実際に重要ですか? (古くなったデータがあまりにも多くあるかどうかは実際には気にしません)キャッシュを無効にしないと、レコードに必要な時間が更新されます(Syscacheを使用している場合)
解決
特定のエンティティ、エンティティタイプ、またはコレクションに対して2レベルのキャッシュを手動で処分できます。
から http://knol.google.com/k/fabio-maulo/nhibernate-chapter-16-improving/1nr4enxv3dpeq/19#
セカンドレベルのキャッシュには、インスタンス、クラス全体、コレクションインスタンス、またはコレクション全体の役割のキャッシュ状態を追い出すために、IsessionFactoryで定義された方法があります。
sessionFactory.Evict(typeof(Cat), catId); //evict a particular Cat sessionFactory.Evict(typeof(Cat)); //evict all Cats sessionFactory.EvictCollection("Eg.Cat.Kittens", catId); //evict a particular collection of kittens sessionFactory.EvictCollection("Eg.Cat.Kittens"); //evict all kitten collections
他のヒント
古いデータを持っている可能性が大丈夫な場合は、デフォルトの有効期限を快適なものに設定するだけで、設定されます。
例:
<property name="cache.default_expiration">120</property>
これにより、デフォルトの有効期限が2分に設定されるため、古いデータがそれよりも古いデータが表示されることはありません。
所属していません StackOverflow