【问题标题】:Azure DataCaches and regionsAzure 数据缓存和区域
【发布时间】:2013-06-17 13:34:35
【问题描述】:

我了解 Azure 缓存中的区域提供了一种不同的方式来访问缓存中的对象(使用密钥除外)。

但是,我想知道为什么有一个版本的 DataCache.GetAndLock() 可以同时接受密钥 区域。

key 还不足以识别缓存中的对象吗?或者我可以在不同的区域(在同一个 DataCache 中)拥有具有相同键的对象吗?

如果我将一个对象添加到某个区域,然后尝试在不指定区域(但只指定键)的情况下获取它,会发生什么?

【问题讨论】:

  • GetAndLock() 方法似乎只适用于缓存区域内的对象。是的,您可以在不同的缓存区域中拥有具有相同键的对象。

标签: azure azure-caching


【解决方案1】:

键定义区域内的对象

区域作为一种机制而存在,用于指​​定应将相似数据存储在同一缓存服务器上。这允许您利用搜索缓存并返回一组对象的缓存调用。如果没有区域提供的保证,这些查询可能不得不分散到多个缓存服务器。

如果您使用指定区域的重载插入对象,则必须使用不指定区域的方法重载类似地访问它。这些对象存储在默认缓存中,不能保证它们驻留在单个缓存服务器上。

相反,如果您需要使用缓存的标记和搜索选项,您应该将对象插入特定区域并使用相应的Get 操作来指定区域。

【讨论】:

  • 有一个 Add 重载接受没有区域的标签,这有点奇怪。这些是否放置在默认区域中,带有您永远无法使用的标签? msdn.microsoft.com/en-us/library/ff424541.aspx
  • 同意——在我看来,缓存接口总是很奇怪。缓存文档甚至特别提到了这种行为。参考:msdn.microsoft.com/en-us/library/ff424589%28v=WS.10%29.aspx 的“备注”部分指出,没有区域的 Put 方法不会在区域中存储对象。它还指出,如果没有将对象存储在区域中,则无法使用标签进行检索。
【解决方案2】:

纠正您的假设:使用区域不是访问键以外的缓存对象的另一种方法。区域用于对放入缓存中的对象类型进行分叉。它是一个逻辑实体。就像一个购物车。如果您想将与电子产品相关的物品放在一个桶中,则将它们放在“电子产品”区域,但您放入该桶中的所有对象都将拥有自己的密钥。您将使用键和区域访问/检索对象.. 因此,如果您已将一个对象放入特定区域,并且您想要该对象的锁定句柄,您可以将锁定句柄与键和区域参数一起使用。否则你使用只有关键参数的那个

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-12
    • 1970-01-01
    • 2014-07-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多