【问题标题】:Windows Azure Caching get instance of cache item just before it gets deletedWindows Azure Caching 在缓存项被删除之前获取它的实例
【发布时间】:2013-06-04 13:59:29
【问题描述】:

我正在使用 Azure 缓存(支持本地缓存的辅助角色)来缓存一些项目。不,我想在缓存项目被驱逐之前将其保存到 Azure 存储表。我知道我可以挂接到来自服务器的删除通知,但它只是告诉我已删除的密钥,而没有任何对实际对象的引用。有人知道如何解决这个问题吗?

我一直在考虑生成某种线程来检查项目是否仍然可用,并且每次缓存中的对象被摆弄时我都会删除计时器并创建新的计时器。这个解决方案的问题是我的服务器上很快就有 100000 个计时器在狂奔。还有其他想法吗?

【问题讨论】:

    标签: caching azure


    【解决方案1】:

    首先,windows azure 缓存不可靠,我们遇到了同样的问题,所以如果你想要可靠性,缓存不会为你提供 100%。其次,尝试在您的云实例文件中增加“生存时间”,以及到期时间我猜是“绝对”。您可以通过转到云实例的属性然后选择缓存来做到这一点。

    【讨论】:

    • “Azure 缓存不可靠” - 以什么方式?您是否为缓存启用了高可用性并分配了多个实例?
    • 嗯,我们有直接来自微软的顾问(我们支付了顾问服务费用),他们自己说你不能依赖缓存。我做了一个快速的谷歌查找来找到它,但不能。我敢肯定,如果您深入研究,您一定会找到参考资料。
    • 此外,如果启用了 AH,则会增加延迟以允许数据复制。因此,实际上您可能正在请求 Node2 中的数据,但仍未从 Node1 复制。您需要实施重试策略来解决这个问题。
    • 另外,缓存本质上是一种非常不稳定/敏感的媒介。
    • @David Makogon:更正:微软说 Azure 缓存在我们想要使用的方式上并不可靠。
    【解决方案2】:

    与其试图在项目到期之前将其放入存储中,不如在创建时将其放入存储中。正如其他人所说,所有类型的缓存都应该被认为是易失的。

    如果您使用缓存来快速保存项目更新,这可能不是您要寻找的答案。

    【讨论】:

      猜你喜欢
      • 2012-02-10
      • 2016-05-05
      • 2020-01-20
      • 2022-11-25
      • 2016-07-10
      • 1970-01-01
      • 2017-05-28
      • 2015-11-10
      • 2013-02-09
      相关资源
      最近更新 更多