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

Création d'un cache

  1. Pour créer un cache, connectez-vous au portail Azure, puis sélectionnez Créer une ressource.

    Create a resource is highlighted in the left navigation pane.

  2. Dans la page Nouvelle, sélectionnez Bases de données, puis Azure Cache pour Redis.

    On New, Databases is highlighted, and Azure Cache for Redis is highlighted.

  3. 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.
  4. Sélectionnez l’onglet Réseau ou sélectionnez le bouton Réseau au bas de la page.

  5. Sous l’onglet Réseau, sélectionnez votre méthode de connectivité.

  6. Sélectionnez le bouton Suivant : Avancé ou sélectionnez le bouton Suivant : Avancé en bas de la page pour afficher l’onglet Avancé.

    Screenshot showing the Advanced tab in the working pane and the available option to select.

    • Pour un cache De base ou Standard, changez la sélection pour utiliser un port non TLS. Vous pouvez également sélectionner Authentification Microsoft Entra si vous souhaitez activer cette option.
    • 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 Authentification Microsoft Entra si vous souhaitez activer cette option.
  7. Sélectionnez l’onglet Suivant : Avancé ou sélectionnez le bouton Suivant : Étiquettes au bas de la page.

  8. Si vous le voulez, sous l’onglet Étiquettes, entrez le nom et la valeur si vous souhaitez catégoriser la ressource.

  9. Sélectionnez Revoir + créer. Vous êtes redirigé vers l’onglet Vérifier + créer où Azure valide votre configuration.

  10. Une fois que le message vert Validation réussie s’affiche, sélectionnez Créer.

La création d’un cache prend du 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 récupérer les clés d’accès, sélectionnez Clés d’accès dans la barre de navigation de gauche du cache.

    Azure Cache for Redis keys

  • Pour récupérer le nom d’hôte et les ports, sélectionnez Propriétés dans la barre de navigation de gauche du cache. Le nom d’hôte prend la forme <nom DNS>.redis.cache.windows.net.

    Azure Cache for Redis properties

  1. Créez un fichier sur votre ordinateur nommé CacheSecrets.config et placez-le dans C:\AppSecrets\CacheSecrets.config.

  2. 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>
    
  3. Remplacez <host-name> par le nom d’hôte de votre cache.

  4. Remplacez <access-key> par la clé primaire de votre cache.

  5. 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.

  1. 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
    
  2. 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 appSettingsfile 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 :

  1. Cliquez sur Outils>Gestionnaire de package NuGet>Console du Gestionnaire de package.

  2. 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.

Console app completed

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.

Delete

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.

Étapes suivantes