Avvio rapido: Usare la cache di Azure per Redis in .NET Core
In questa guida di avvio rapido si incorpora Azure Cache for Redis in un'app .NET Core per accedere a una cache sicura e dedicata accessibile da qualsiasi applicazione in Azure. Si usa specificamente il client StackExchange.Redis con codice C# in un'app console .NET Core.
Passare al codice in GitHub
Clonare il repository https://github.com/Azure-Samples/azure-cache-redis-samples/tree/main/quickstart/dotnet-core in GitHub.
Prerequisiti
- Sottoscrizione di Azure: creare un account gratuito
- ASP.NET Core SDK
Creare una cache
Per creare una cache, accedere al portale di Azure. Nel menu del portale selezionare Crea una risorsa.
Nel riquadro Attività iniziali immettere Cache di Azure per Redis nella barra di ricerca. Nei risultati della ricerca trovare Cache di Azure per Redis e quindi selezionare Crea.
Nel riquadro Nuova cache Redis, nella scheda Informazioni di base configurare le impostazioni seguenti per la cache:
Impostazione Azione Descrizione Abbonamento Seleziona la tua sottoscrizione di Azure. Sottoscrizione da usare per creare la nuova istanza della cache di Azure per Redis. Gruppo di risorse Selezionare un gruppo di risorse oppure selezionare Crea nuovo e immettere un nuovo nome del gruppo di risorse. Nome del gruppo di risorse in cui creare la cache e altre risorse. L'inserimento di tutte le risorse di un'app in un unico gruppo di risorse ne semplifica la gestione o l'eliminazione. Nome DNS Immettere un nome univoco. Il nome della cache deve essere una stringa compresa tra 1 e 63 caratteri contenente solo numeri, lettere o trattini. Il nome deve iniziare e terminare con un numero o una lettera e non può contenere trattini consecutivi. Il nome host dell'istanza della cache è \<DNS name>.redis.cache.windows.net
.Location Selezionare una località. Un'area di Azure vicina ad altri servizi che usano la cache. SKU della cache Selezionare uno SKU. Lo SKU determina le dimensioni, le prestazioni e i parametri delle funzionalità disponibili per la cache. Per altre informazioni, vedere la panoramica su Cache Redis di Azure. Dimensioni della cache Selezionare le dimensioni della cache. Per altre informazioni, vedere la panoramica su Cache Redis di Azure. Selezionare la scheda Rete oppure selezionare Avanti: Rete.
Nella scheda Rete selezionare un metodo di connettività da usare per la cache.
Selezionare la scheda Avanzate o Avanti: Avanzate.
Nel riquadro Avanzate verificare o selezionare un metodo di autenticazione in base alle informazioni seguenti:
- Per impostazione predefinita, per una nuova cache Basic, Standard o Premium, l'Autenticazione di Microsoft Entra è abilitata e l'Autenticazione delle chiavi di accesso è disabilitata.
- Per le cache Basic o Standard, è possibile scegliere la selezione di una porta non TLS.
- Per le cache Standard e Premium, è possibile scegliere di abilitare le zone di disponibilità. Non è possibile disabilitare le zone di disponibilità dopo la creazione della cache.
- Per una cache Premium, configurare le impostazioni per la porta non TLS, il clustering, l'identità gestita e la persistenza dei dati.
Importante
Per una protezione ottimale, è consigliabile usare Microsoft Entra ID con identità gestite per autorizzare le richieste nella cache ogni volta che è possibile. L'autorizzazione tramite Microsoft Entra ID e le identità gestite offre sicurezza e facilità d'uso superiori rispetto all'autorizzazione con chiave di accesso condiviso. Per altre informazioni sull'uso delle identità gestite con le cache, vedere Usare Microsoft Entra ID per l'autenticazione della cache.
(Facoltativo) Selezionare la scheda Tag o selezionare Avanti: Tag.
(Facoltativo) Nella scheda Tag immettere un nome e un valore di tag per classificare la risorsa della cache.
Selezionare il pulsante Rivedi e crea.
Nella scheda Rivedi e crea Azure convalida automaticamente la configurazione.
Quando viene visualizzato il messaggio verde di Convalida superata, selezionare Crea.
Una nuova distribuzione della cache richiede diversi minuti. È possibile monitorare lo stato di avanzamento della distribuzione nel riquadro Panoramica di Cache di Azure per Redis. Quando Stato mostra In esecuzione, la cache è pronta per l'uso.
Abilitare l'autenticazione di Microsoft Entra ID nella cache
Se si dispone di una cache, verificare se è stata abilitata l'autenticazione di Microsoft Entra. In caso contrario, abilitarla. È consigliabile usare Microsoft Entra ID per le app.
Nel portale di Azure selezionare l'istanza della cache di Azure per Redis in cui si vuole usare l'autenticazione basata su token di Microsoft Entra.
Selezionare Autenticazione dal menu Risorsa.
Controllare nel riquadro di lavoro per verificare se è selezionata l'opzione Abilita autenticazione Microsoft Entra. In tal caso, è possibile procedere.
Selezionare Abilita autenticazione di Microsoft Entra e immettere il nome di un utente valido. All'utente immesso viene assegnato automaticamente il criterio di accesso Proprietario dei dati per impostazione predefinita quando si seleziona Salva. È anche possibile immettere un'identità gestita o un'entità servizio per connettersi all'istanza della cache.
Viene visualizzata una finestra di dialogo popup in cui viene chiesto se si vuole aggiornare la configurazione e viene segnalato che l'operazione richiede qualche minuto. Selezionare Sì.
Importante
Al termine dell'operazione di abilitazione, i nodi nell'istanza della cache vengono riavviati per caricare la nuova configurazione. È consigliabile eseguire questa operazione durante la finestra di manutenzione o al di fuori dell'orario di ufficio di punta. L'operazione può richiedere fino a 30 minuti.
Per informazioni sull'uso di Microsoft Entra ID con l'interfaccia della riga di comando di Azure, vedere le pagine di riferimento per l'identità.
Prendere nota del NOME HOST. Questi valori verranno usati in un secondo momento per appsettings.json.
Aggiungere un segreto locale per la stringa di connessione
Nel file appsettings.json aggiungere quanto segue:
{
"RedisHostName": "your_Azure_Redis_hostname"
}
Sostituire "your_Azure_Redis_hostname" con il nome host e i numeri di porta di Azure Redis. Ad esempio:
cache-name.region.redis.azure.net:10000
per Azure Managed Redis (anteprima) ecache-name.redis.cache.windows.net:6380
per i servizi di cache di Azure per Redis.Salvare il file.
Connettersi alla cache con RedisConnection
In RedisConnection.cs
si può vedere che lo spazio dei nomi StackExchange.Redis
è stato aggiunto al codice. Questa operazione è necessaria per la classe RedisConnection
.
using StackExchange.Redis;
Il codice RedisConnection
garantisce che sia sempre presente una connessione integra alla cache gestendo l'istanza ConnectionMultiplexer
da StackExchange.Redis
. La classe RedisConnection
ricrea la connessione quando una connessione viene persa e non è possibile riconnettersi automaticamente.
Per altre informazioni, vedere StackExchange.Redis e il codice in un repository GitHub.
Esecuzione dei comandi di cache
In program.cs
, è possibile visualizzare il codice seguente per il metodo RunRedisCommandsAsync
nella classe Program
per l'applicazione console:
private static async Task RunRedisCommandsAsync(string prefix)
{
// Simple PING command
Console.WriteLine($"{Environment.NewLine}{prefix}: Cache command: PING");
RedisResult pingResult = await _redisConnection.BasicRetryAsync(async (db) => await db.ExecuteAsync("PING"));
Console.WriteLine($"{prefix}: Cache response: {pingResult}");
// Simple get and put of integral data types into the cache
string key = "Message";
string value = "Hello! The cache is working from a .NET console app!";
Console.WriteLine($"{Environment.NewLine}{prefix}: Cache command: GET {key} via StringGetAsync()");
RedisValue getMessageResult = await _redisConnection.BasicRetryAsync(async (db) => await db.StringGetAsync(key));
Console.WriteLine($"{prefix}: Cache response: {getMessageResult}");
Console.WriteLine($"{Environment.NewLine}{prefix}: Cache command: SET {key} \"{value}\" via StringSetAsync()");
bool stringSetResult = await _redisConnection.BasicRetryAsync(async (db) => await db.StringSetAsync(key, value));
Console.WriteLine($"{prefix}: Cache response: {stringSetResult}");
Console.WriteLine($"{Environment.NewLine}{prefix}: Cache command: GET {key} via StringGetAsync()");
getMessageResult = await _redisConnection.BasicRetryAsync(async (db) => await db.StringGetAsync(key));
Console.WriteLine($"{prefix}: Cache response: {getMessageResult}");
// Store serialized object to cache
Employee e007 = new Employee("007", "Davide Columbo", 100);
stringSetResult = await _redisConnection.BasicRetryAsync(async (db) => await db.StringSetAsync("e007", JsonSerializer.Serialize(e007)));
Console.WriteLine($"{Environment.NewLine}{prefix}: Cache response from storing serialized Employee object: {stringSetResult}");
// Retrieve serialized object from cache
getMessageResult = await _redisConnection.BasicRetryAsync(async (db) => await db.StringGetAsync("e007"));
Employee e007FromCache = JsonSerializer.Deserialize<Employee>(getMessageResult);
Console.WriteLine($"{prefix}: Deserialized Employee .NET object:{Environment.NewLine}");
Console.WriteLine($"{prefix}: Employee.Name : {e007FromCache.Name}");
Console.WriteLine($"{prefix}: Employee.Id : {e007FromCache.Id}");
Console.WriteLine($"{prefix}: Employee.Age : {e007FromCache.Age}{Environment.NewLine}");
}
Per archiviare e recuperare gli elementi nella cache, è possibile usare i metodi StringSetAsync
e StringGetAsync
.
Nell'esempio è possibile vedere che la chiave Message
è impostata su Value. L'app ha aggiornato questo valore memorizzato nella cache. L'app ha anche eseguito PING
e il comando.
Gestire gli oggetti .NET nella cache
Il server Redis archivia la maggior parte dei dati come stringhe, tuttavia queste stringhe possono contenere molti tipi di dati, tra cui dati binari serializzati, utilizzabili durante l'archiviazione di oggetti .NET nella cache.
Cache Redis di Azure è in grado di memorizzare nella cache sia oggetti .NET che tipi di dati primitivi, ma prima della memorizzazione nella cache un oggetto .NET deve essere serializzato.
La serializzazione di un oggetto .NET spetta allo sviluppatore dell'applicazione, che può scegliere liberamente il serializzatore da usare.
La classe Employee
seguente è stata definita in Program.cs in modo che l'esempio possa anche mostrare come ottenere e impostare un oggetto serializzato:
class Employee
{
public string Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public Employee(string id, string name, int age)
{
Id = id;
Name = name;
Age = age;
}
}
Eseguire l'esempio
Se sono stati aperti file, salvarli e compilare l'app con il comando seguente:
dotnet build
Eseguire l'app con il comando seguente per testare la serializzazione degli oggetti .NET:
dotnet run
Pulire le risorse
Per continuare a usare le risorse create in questo articolo, mantenere il gruppo di risorse.
In caso contrario, se le risorse sono state completate, per evitare addebiti è possibile eliminare il gruppo di risorse di Azure creato.
Importante
L'eliminazione di un gruppo di risorse è irreversibile. Quando si elimina un gruppo di risorse, tutte le risorse in esso contenute vengono eliminate in modo permanente. Assicurarsi di non eliminare accidentalmente il gruppo di risorse sbagliato o le risorse errate. Se le risorse sono state create all'interno di un gruppo di risorse esistente che contiene anche elementi da mantenere, è possibile eliminare ogni singolo elemento a sinistra anziché eliminare il gruppo di risorse.
Per eliminare un gruppo di risorse
Accedere al portale di Azure e selezionare Gruppi di risorse.
Scegliere il gruppo di risorse da eliminare.
Se sono presenti molti gruppi di risorse, usare la casella Filtro per qualsiasi campo... e digitare il nome del gruppo di risorse creato per questo articolo. Nell’elenco dei risultati selezionare il gruppo di risorse.
Selezionare Elimina gruppo di risorse.
Verrà chiesto di confermare l'eliminazione del gruppo di risorse. Digitare il nome del gruppo di risorse per confermare e quindi selezionare Elimina.
Dopo qualche istante, il gruppo di risorse e tutte le risorse che contiene vengono eliminati.