【问题标题】:NHibernate second-level cache with external updates带有外部更新的 NHibernate 二级缓存
【发布时间】:2010-06-06 20:14:52
【问题描述】:

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

【问题讨论】:

    标签: nhibernate caching syscache


    【解决方案1】:

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

    来自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"); //驱逐所有小猫收藏
    

    【讨论】:

      【解决方案2】:

      如果您可以接受一些陈旧数据的可能性,只需将默认到期时间设置为您认为合适的值,然后您就会被设置。

      例子:

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

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

      【讨论】:

        猜你喜欢
        • 2011-09-02
        • 2011-10-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-26
        • 2011-10-26
        • 2011-06-19
        相关资源
        最近更新 更多