具有外部更新的NHibernate二级缓存

具有外部更新的NHibernate二级缓存,nhibernate,caching,syscache,Nhibernate,Caching,Syscache,我有一个99%只读的web应用程序,它有一个单独的服务,以特定的间隔(比如每10分钟)更新数据库。此服务如何告知应用程序使其二级缓存无效?这真的重要吗?(我实际上不在乎是否有太多的过时数据)如果我不使缓存失效,更新记录需要多长时间(如果使用SysCache)如果您对可能有一些过时数据的可能性没有异议,只需将默认过期时间设置为您满意的时间,您就可以进行设置 例如: <property name="cache.default_expiration">120</property>

我有一个99%只读的web应用程序,它有一个单独的服务,以特定的间隔(比如每10分钟)更新数据库。此服务如何告知应用程序使其二级缓存无效?这真的重要吗?(我实际上不在乎是否有太多的过时数据)如果我不使缓存失效,更新记录需要多长时间(如果使用SysCache)

如果您对可能有一些过时数据的可能性没有异议,只需将默认过期时间设置为您满意的时间,您就可以进行设置

例如:

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

这将默认过期时间设置为两分钟,因此您永远不会看到过期时间超过两分钟的陈旧数据。

您可以手动处置特定实体、实体类型或集合的二级缓存

对于二级缓存,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 sessionFactory.execute(类型(Cat),catId)//驱逐某只猫 sessionFactory.execute(type of(Cat))//逐出所有的猫 sessionFactory.ReceiveCollection(“如猫小猫”,catId)//驱逐一批特定的小猫 sessionFactory.ReceiveCollection(“如猫咪”)//逐出所有小猫收藏