【问题标题】:How to avoid circular cache invalidation infinite-loop如何避免循环缓存失效无限循环
【发布时间】:2013-12-05 07:52:02
【问题描述】:

假设我们有一个采用这种结构的应用:

Client
--ClientUser
----Questionnaire
------Question

我们正在缓存这些项目中的每一项。如果我使这些项目之一无效,则需要向上和向下传播。因为添加新问题后,问卷的 questionCount 将被废弃。此外,在更改客户端名称后,缓存的 ClientUser 对象中的客户端数组将被废弃。

所以每个失效代码也必须调用它的父和子失效代码。但是,在使问题无效后,它也会向上传播并使客户端无效。但是客户端失效代码也会向下传播,而且这种情况会一直持续下去......

我怎样才能避免这种情况?

【问题讨论】:

    标签: php caching


    【解决方案1】:

    有两种方法,取决于是否可以循环。

    1. 切勿将失效传播回您从中获取它的对象。

    2. 有一个与正在进行的失效相关联的对象,并让它跟踪每个已经失效的对象。被失效的对象必须要求该对象为他们使其他对象失效,并且它不会使作为该失效的一部分已经失效的对象失效。

    【讨论】:

      猜你喜欢
      • 2019-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多