2010-06-06 53 views
4

我有一個99%只讀的Web應用程序,它具有一個單獨的服務,以特定的時間間隔(如每隔10分鐘)更新數據庫。這項服務如何告訴應用程序使其二級緩存失效?它真的很重要嗎? (我實際上並不關心我的數據是否過多)如果我沒有使緩存無效需要多少時間才能更新記錄(如果使用SysCache)有外部更新的NHibernate二級緩存

回答

9

您可以爲特定實體,實體類型或集合手動配置第二級緩存。

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 
4

如果您確定可能有一些陳舊的數據,只需將默認到期日設置爲您熟悉的事情,然後您就可以開始設置。

例子:

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

這將設置默認的截止到兩分鐘,所以你永遠不會看到比舊的陳舊數據。