Azure 角色中缓存中的区域和标记
重要
Microsoft 建议所有新开发使用 Azure Redis 缓存。 有关选择 Azure 缓存产品/服务的当前文档和指南,请参阅 哪个 Azure 缓存产品/服务适合我?
In-Role缓存支持创建和使用用户定义的 区域。 此功能可用于驻留在基于角色的In-Role缓存上的缓存。 区域是缓存项目的一个子组。 区域还支持使用附加的描述性字符串(称为标记)对缓存项目进行注释。 区域支持对该区域内的任何标记项执行搜索操作的能力。
区域注意事项
区域是可选的;如果要使用它们,请使用 CreateRegion 方法在代码中显式创建它们。 创建区域后,可以为插入该区域的对象添加标记。 Add 和 Put 方法上存在重载,这些方法接受区域名称。 若要搜索具有给定标记的对象区域,请使用 GetObjectsByTag、 GetObjectsByAnyTag 和 GetObjectsByAllTags 的方法。
由于搜索功能的体系结构要求,区域中的对象被限制在单个缓存服务器中。 在 Azure 部署中,这意味着整个区域驻留在单个服务器上。 如果启用了高可用性,则区域的备份存在于其他服务器上。 在 Azure 中,这些服务器是托管In-Role缓存的角色的虚拟机实例。 此行为不同于未使用区域的方案。 在该方案中,分布式内存中缓存中的新项目将放置在任何可用的缓存服务器上。
警告
区域必须以其中一个缓存服务器上的单个实体的形式存在。 因此,任何单个角色实例上可用的缓存内存量必须大于最大预期区域。 可能会使用多个较小的区域来实现区域和标记的优点以及分布式缓存的优势。
示例
以下示例显示了如何创建名为 Test
的区域。
DataCache cache = new DataCache("default");
cache.CreateRegion("Test");
以下示例显示了如何使用标记将三个对象添加到 Test
区域。
List<DataCacheTag> tagList1 = new List<DataCacheTag>()
{
new DataCacheTag("Tag1"),
new DataCacheTag("Tag2")
};
List<DataCacheTag> tagList2 = new List<DataCacheTag>()
{
new DataCacheTag("Tag3")
};
cache.Put("Key1", "Value1", tagList1, "Test");
cache.Put("Key2", "Value2", tagList1, "Test");
cache.Put("Key3", "Value3", tagList2, "Test");
以下示例显示了如何在 Test
区域中搜索所有具有 Tag1
标记的对象。
foreach (KeyValuePair<string, object> result in
cache.GetObjectsByTag(new DataCacheTag("Tag1"), "Test"))
{
string keyValue = result.Key;
string objectValue = result.Value.ToString();
}