Aree e tag in Cache nel ruolo di Azure
Importante
Microsoft consiglia tutti i nuovi sviluppi di usare Cache Redis di Azure. Per la documentazione e le indicazioni correnti sulla scelta di un'offerta di Cache di Azure, vedere Quale offerta di Cache di Azure è adatta per l'utente?
In-Role Cache supporta la creazione e l'uso di aree definite dall'utente. Questa funzionalità è disponibile per le cache che si trovano nella cache basata su ruoli In-Role Cache. Un'area è un sottogruppo di elementi memorizzati nella cache. Inoltre, le aree supportano l'annotazione di elementi memorizzati nella cache con stringhe descrittive aggiuntive denominate tag, Le aree supportano l'esecuzione di operazioni di ricerca in tutti gli elementi con tag di tale area.
Considerazioni sulle aree
Le aree sono facoltative; se si desidera usarli, crearli in modo esplicito nel codice con il metodo CreateRegion . Dopo la creazione di un'area, si possono aggiungere tag a oggetti inseriti in questa area. Esistono overload nei metodi Add e Put che accettano un nome di area. Per cercare oggetti in un'area con un tag specificato, usare i metodi GetObjectsByTag, GetObjectsByAnyTag e GetObjectsByAllTags.
A causa dei requisiti di architettura della funzionalità di ricerca, gli oggetti in un'area sono limitati a un singolo server di cache. In una distribuzione di Azure, ciò significa che l'intera area risiede in un singolo server. Se è abilitata la disponibilità elevata, è presente un backup dell'area in un altro server. In Azure questi server sono istanze di macchine virtuali del ruolo che ospita In-Role Cache. Questo comportamento è diverso dallo scenario in cui non vengono usate aree. In tale scenario i nuovi elementi nella cache in memoria distribuita vengono posizionati in uno dei server di cache disponibili.
Avviso
Un'area deve esistere come entità singola in uno dei server di cache. Pertanto, la quantità di memoria di memorizzazione nella cache disponibile in qualsiasi istanza del ruolo singola deve essere maggiore dell'area prevista più grande. Usare possibilmente più aree di dimensioni ridotte per usufruire dei vantaggi delle aree e dei tag, nonché della cache distribuita.
Esempio
Il seguente esempio illustra come creare un'area denominata Test
.
DataCache cache = new DataCache("default");
cache.CreateRegion("Test");
Il seguente esempio illustra come aggiungere tre oggetti all'area Test
con tag.
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");
Il seguente esempio illustra come cercare nell'area Test
tutti gli oggetti con tag Tag1
.
foreach (KeyValuePair<string, object> result in
cache.GetObjectsByTag(new DataCacheTag("Tag1"), "Test"))
{
string keyValue = result.Key;
string objectValue = result.Value.ToString();
}