我了解 Azure 缓存中的区域提供了一种不同的方式来访问缓存中的对象(使用密钥除外)。
但是,我想知道为什么有一个接受密钥和区域的DataCache.GetAndLock()版本。
是不是 key 不足以识别缓存中的对象?或者我可以在不同区域(在同一个数据缓存中)拥有具有相同键的对象吗?
如果我将对象添加到某个区域,然后尝试在不指定区域(但只指定键)的情况下获取它,会发生什么情况?
我了解 Azure 缓存中的区域提供了一种不同的方式来访问缓存中的对象(使用密钥除外)。
但是,我想知道为什么有一个接受密钥和区域的DataCache.GetAndLock()版本。
是不是 key 不足以识别缓存中的对象?或者我可以在不同区域(在同一个数据缓存中)拥有具有相同键的对象吗?
如果我将对象添加到某个区域,然后尝试在不指定区域(但只指定键)的情况下获取它,会发生什么情况?
键定义区域内的对象。
区域作为一种机制而存在,用于指定相似数据应存储在同一缓存服务器上。这允许您利用搜索缓存并返回一组对象的缓存调用。如果没有区域提供的保证,这些查询可能不得不分散到多个缓存服务器。
如果使用未指定区域的重载插入对象,则必须使用未指定区域的方法重载类似地访问它。这些对象存储在默认缓存中,不能保证它们驻留在单个缓存服务器上。
相反,如果您需要使用缓存的标记和搜索选项,您应该将对象插入特定区域并使用Get
指定区域的相应操作。
纠正您的假设:使用区域不是访问键以外的缓存对象的另一种方法。区域用于对放入缓存中的对象类型进行分叉。它是一个逻辑实体。就像一个购物车。如果您想将与电子产品相关的物品放在一个桶中,则将它们放在“电子产品”区域,但您放入该桶中的所有对象都将拥有自己的密钥。您将使用键和区域访问/检索对象。因此,如果您已将对象放入特定区域并且想要该对象的锁定句柄,则可以使用具有键和区域参数的锁定句柄。否则你使用只有关键参数的那个