4

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

4

2 回答 2

9

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

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

对于二级缓存,在 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>

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

于 2010-06-06T21:30:25.347 回答