Démarrage rapide : Utiliser Azure Cache pour Redis dans le .NET Framework
Dans ce guide de démarrage rapide, vous allez incorporer le cache Azure pour Redis dans une application .NET Framework pour avoir accès à un cache sécurisé et dédié accessible à partir de n’importe quelle application dans Azure. Vous utiliserez spécifiquement le client StackExchange.Redis avec du code C# dans une application console .NET.
Passer au code sur GitHub
Clonez le référentiel à partir de (https://github.com/Azure-Samples/azure-cache-redis-samples/tree/main/quickstart/dotnet sur GitHub.
Prérequis
- Abonnement Azure : créez-en un gratuitement
- Visual Studio 2019
- .NET Framework 4 ou ultérieur, qui est requis par le client StackExchange.Redis.
Création d'un cache
Pour créer un cache, connectez-vous au portail Azure, puis sélectionnez Créer une ressource.
Dans la page Nouvelle, sélectionnez Bases de données, puis Azure Cache pour Redis.
Dans la page Nouveau cache Redis, configurez les paramètres du nouveau cache.
Paramètre Choisir une valeur Description Abonnement Dans la liste déroulante, sélectionnez votre abonnement. Abonnement sous lequel créer cette nouvelle instance d’Azure Cache pour Redis. Groupe de ressources Dans la liste déroulante, sélectionnez un groupe de ressources ou choisissez Créer nouveau, puis entrez un nouveau nom de groupe de ressources. Nom du groupe de ressources dans lequel créer votre cache et d’autres ressources. En plaçant toutes les ressources de votre application dans un seul groupe de ressources, vous pouvez facilement les gérer ou les supprimer ensemble. Nom DNS Entrez un nom unique. Le nom du cache doit être une chaîne de 1 à 63 caractères ne contenant que des chiffres, des lettres ou des traits d’union. Le nom doit commencer et se terminer par un chiffre ou une lettre, et ne peut pas contenir de traits d’union consécutifs. Le nom d’hôte de votre instance de cache est <nom DNS>.redis.cache.windows.net. Lieu Dans la liste déroulante, sélectionnez un emplacement. Choisissez une Région proche d’autres services qui utilisent votre cache. Type de cache Faites défiler vers le bas et sélectionnez un niveau. Le niveau détermine la taille, les performances et les fonctionnalités disponibles pour le cache. Pour plus d’informations, consultez Présentation du cache Azure pour Redis. Sélectionnez l’onglet Réseau ou sélectionnez le bouton Réseau au bas de la page.
Sous l’onglet Réseau, sélectionnez votre méthode de connectivité.
Sélectionnez l’onglet Suivant : Avancé ou sélectionnez le bouton Suivant : Avancé en bas de la page pour afficher l’onglet Avancé.
- Pour un cache De base ou Standard, changez la sélection pour utiliser un port non-TLS. Vous pouvez également sélectionner si vous souhaitez activer Authentification Microsoft Entra.
- Pour un cache Premium, configurez les paramètres afin d’utiliser un port non-TLS, le clustering, l’identité managée et la persistance des données. Vous pouvez également sélectionner si vous souhaitez activer Authentification Microsoft Entra.
Sélectionnez l’onglet Suivant : Avancé ou sélectionnez le bouton Suivant : Étiquettes au bas de la page.
Si vous le voulez, sous l’onglet Étiquettes, entrez le nom et la valeur si vous souhaitez catégoriser la ressource.
Sélectionnez Revoir + créer. Vous êtes redirigé vers l’onglet Vérifier + créer où Azure valide votre configuration.
Une fois que le message vert Validation réussie s’affiche, sélectionnez Créer.
La création d’un cache prend un certain temps. Vous pouvez surveiller la progression dans la page Vue d’ensemble du Azure Cache pour Redis. Lorsque État indique En cours d’exécution, le cache est prêt pour utilisation.
Récupération du nom d’hôte, des ports et des clés d’accès à partir du portail Azure
Pour connecter votre serveur Azure Cache pour Redis, le client de cache a besoin du nom d’hôte, des ports et d’une clé pour le cache. Certains clients peuvent référencer ces éléments par des noms légèrement différents. Vous pouvez récupérer le nom d’hôte, les ports et les clés d’accès à partir du portail Azure.
Pour obtenir les clés d’accès, sélectionnez Authentification dans le menu Ressource. Sélectionnez ensuite l’onglet Clés d’accès.
Pour obtenir le nom d’hôte et les ports de votre cache, sélectionnez Vue d’ensemble dans le menu Ressource. Le nom d’hôte prend la forme <nom DNS>.redis.cache.windows.net.
Créez un fichier sur votre ordinateur nommé CacheSecrets.config et placez-le dans C:\AppSecrets\CacheSecrets.config.
Modifiez le fichier CacheSecrets.config et ajoutez le contenu suivant :
<appSettings> <add key="CacheConnection" value="<host-name>,abortConnect=false,ssl=true,allowAdmin=true,password=<access-key>"/> </appSettings>
Remplacez
<host-name>
par le nom d’hôte de votre cache.Remplacez
<access-key>
par la clé primaire de votre cache.Enregistrez le fichier .
Configuration du client de cache
Dans cette section, vous préparez l’application console pour utiliser le client StackExchange.Redis pour .NET.
Dans Visual Studio, sélectionnez Outils>Gestionnaire de package NuGet>Console du gestionnaire de package, puis exécutez la commande suivante à partir de la fenêtre de la console du gestionnaire de package.
Install-Package StackExchange.Redis
Une fois l’installation terminée, le client de cache StackExchange.Redis est disponible pour être utilisé avec votre projet.
Se connecter au cache de secrets
Dans Visual Studio, ouvrez votre fichier App.config pour vérifier qu’il inclut un attribut appSettings
file
référençant le fichier CacheSecrets.config.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
<appSettings file="C:\AppSecrets\CacheSecrets.config"></appSettings>
</configuration>
Ne stockez jamais d’informations d’identification dans du code source. Pour que cet exemple reste simple, nous utilisons uniquement un fichier de configuration de secrets externe. Une meilleure approche serait d’utiliser Azure Key Vault avec des certificats.
Se connecter au cache avec RedisConnection
La connexion au cache est gérée par la classe RedisConnection
. La connexion est d’abord établie dans cette instruction à partir de Program.cs
:
_redisConnection = await RedisConnection.InitializeAsync(connectionString: ConfigurationManager.AppSettings["CacheConnection"].ToString());
La valeur du appSetting CacheConnection est utilisé pour faire référence à la chaîne de connexion de cache à partir du portail Azure en tant que paramètre de mot de passe.
Dans RedisConnection.cs
, vous voyez l’espace de noms StackExchange.Redis
avec le mot clé using
. Celui-ci est nécessaire pour la classe RedisConnection
.
using StackExchange.Redis;
Le code RedisConnection
garantit qu’il existe toujours une connexion saine au cache en gérant l’instance ConnectionMultiplexer
à partir de StackExchange.Redis
. La classe RedisConnection
recrée la connexion lorsqu’une connexion est perdue et ne peut pas se reconnecter automatiquement.
Pour plus d’informations, consultez StackExchange.Redis et le code dans un référentiel GitHub.
Exécution des commandes de cache
Dans program.cs
, vous pouvez voir le code suivant pour la méthode RunRedisCommandsAsync
dans la classe Program
pour l’application 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}");
}
Les éléments de cache peuvent être stockés et extraits en utilisant les méthodes StringSetAsync
et StringGetAsync
.
Dans l’exemple, vous pouvez voir que la clé Message
est définie. L’application a mis à jour cette valeur mise en cache. Elle a également exécuté la commande PING
.
Utilisation des objets .NET dans le cache
Le serveur Redis stocke la plupart des données sous la forme de chaînes, mais ces chaînes peuvent contenir de nombreux types de données, notamment des données binaires sérialisées, qui peuvent être utilisées lors du stockage d’objets .NET dans le cache.
Le cache Azure pour Redis peut mettre en cache des objets .NET et des types de données primitifs, mais avant qu’un objet .NET puisse être mis en cache, il doit être sérialisé.
La sérialisation d’objet .NET échoit au développeur d’applications, qui a toute latitude pour choisir le sérialiseur.
Une méthode simple pour sérialiser des objets consiste à utiliser les méthodes de sérialisation JsonConvert
dans System.text.Json
.
Ajoutez l’espace de noms System.text.Json
à Visual Studio :
Cliquez sur Outils>Gestionnaire de package NuGet>Console du Gestionnaire de package.
Exécutez ensuite la commande suivante dans la fenêtre Console du Gestionnaire de package :
Install-Package system.text.json
La classe Employee
suivante a été définie dans Program.cs afin que l’exemple puisse également montrer comment obtenir et définir un objet sérialisé :
class Employee
{
public string Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public Employee(string employeeId, string name, int age)
{
Id = employeeId;
Name = name;
Age = age;
}
}
Exécution de l'exemple
Appuyez sur Ctrl + F5 pour générer et exécuter l’application console pour tester la sérialisation des objets .NET.
Nettoyer les ressources
Si vous continuez à utiliser ce guide de démarrage rapide, vous pouvez conserver les ressources créées et les réutiliser.
Sinon, si l’exemple d’application de démarrage rapide était votre dernière opération, vous pouvez supprimer les ressources Azure créées dans ce démarrage rapide afin d’éviter tout frais.
Important
La suppression d’un groupe de ressources est définitive ; le groupe de ressources et l’ensemble des ressources qu’il contient sont supprimés de manière permanente. Veillez à ne pas supprimer accidentellement des ressources ou un groupe de ressources incorrects. Si vous avez créé les ressources pour l'hébergement de cet exemple dans un groupe de ressources existant contenant des ressources que vous souhaitez conserver, vous pouvez supprimer chaque ressource individuellement sur la gauche, au lieu de supprimer l'intégralité du groupe de ressources.
Connectez-vous au portail Azure, puis sélectionnez Groupes de ressources.
Dans la zone de texte Filtrer par nom. , saisissez le nom de votre groupe de ressources. Les instructions de cet article ont utilisé un groupe de ressources nommé TestResources. Sur votre groupe de ressources dans la liste des résultats, cliquez sur ... , puis sur Supprimer le groupe de ressources.
Vous êtes invité à confirmer la suppression du groupe de ressources. Saisissez le nom de votre groupe de ressources à confirmer, puis sélectionnez Supprimer.
Après quelques instants, le groupe de ressources et toutes les ressources qu’il contient sont supprimés.