【发布时间】:2010-06-06 20:14:52
【问题描述】:
我有一个 99% 只读的 Web 应用程序,有一个单独的服务以特定的时间间隔(例如每 10 分钟)更新数据库。该服务如何告诉应用程序使其二级缓存无效?它真的很重要吗? (我实际上并不关心我是否有太多陈旧数据)如果我不使缓存失效,那么记录更新需要多少时间(如果使用 SysCache)
【问题讨论】:
标签: nhibernate caching syscache
我有一个 99% 只读的 Web 应用程序,有一个单独的服务以特定的时间间隔(例如每 10 分钟)更新数据库。该服务如何告诉应用程序使其二级缓存无效?它真的很重要吗? (我实际上并不关心我是否有太多陈旧数据)如果我不使缓存失效,那么记录更新需要多少时间(如果使用 SysCache)
【问题讨论】:
标签: nhibernate caching syscache
您可以为特定实体、实体类型或集合手动处置二级缓存。
来自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"); //驱逐所有小猫收藏
【讨论】:
如果您可以接受一些陈旧数据的可能性,只需将默认到期时间设置为您认为合适的值,然后您就会被设置。
例子:
<property name="cache.default_expiration">120</property>
这会将默认过期时间设置为两分钟,因此您永远不会看到比这更早的陈旧数据。
【讨论】: