Области и теги для управляемой службы кэша Azure
Важно!
Корпорация Майкрософт рекомендует все новые разработки использовать кэш Redis для Azure. Текущая документация и рекомендации по выбору предложения кэша Azure см. в статье о том, какое предложение кэша Azure подходит для меня?
Microsoft Azure Cache поддерживает создание и использование определяемых пользователем регионов. Область — это подгруппа кэшированных элементов. Области также дополнительно поддерживают пометку кэшированных элементов описательными строками — тегами. В рамках региона можно выполнять поиск любого элемента, который помечен тегом.
Вопросы работы с областями
Регионы являются необязательными; Если вы хотите использовать их, явно создайте их в коде с помощью метода CreateRegion . После создания области вы можете добавлять теги к объектам, вставляемым в область. Существуют перегрузки методов Add и Put , которые принимают имя региона. Для поиска области объектов с заданным тегом используйте методы GetObjectsByTag, GetObjectsByAnyTag и GetObjectsByAllTags.
В управляемая служба кэша память кэша распределяется по разным областям службы. В силу архитектурных особенностей функции поиска объекты, относящиеся к одной области, хранятся в одной области службы кэша. Если включен высокий уровень доступности, в другой области памяти службы кэша будет находиться резервная копия области. Это поведение отличается от ситуации, где области не используются. В этом случае новые элементы в кэше распределенного кэша по всем областям памяти службы кэша.
Предупреждение
Так как все элементы, хранящиеся в области, должны находиться в одной области памяти службы кэша, возможно вытеснение элементов из кэша даже при достаточном объеме свободной памяти. Используйте больше областей меньшего размера, чтобы использовать преимущества областей и тегов.
Примеры
В следующем примере показывается создание области 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();
}