Démarrage rapide : Utiliser Azure Cache pour Redis dans .NET Core

Dans ce guide de démarrage rapide, vous allez incorporer le cache Azure pour Redis dans une application .NET Core 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 Core.

Passer au code sur GitHub

Clonez le référentiel https://github.com/Azure-Samples/azure-cache-redis-samples/tree/main/quickstart/dotnet-core 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.

    Créer une ressource est mis en évidence dans le volet de navigation de gauche.

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

    Dans Nouveau, Bases de données et Azure Cache pour Redis sont mis en évidence.

  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 l’onglet Suivant : Avancé ou sélectionnez le bouton Suivant : Avancé en bas de la page pour afficher l’onglet Avancé.

    Capture d’écran montrant l’onglet Avancé dans le volet de travail et l’option pouvant être sélectionnée.

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

    Clés du cache Azure pour Redis

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

    Propriétés d’Azure Cache pour Redis

Prenez note du NOM D’HÔTE et de la clé d’accès PRINCIPALE. Vous utiliserez ces valeurs ultérieurement pour construire le secret CacheConnection.

Ajouter un secret local pour la chaîne de connexion

Dans la fenêtre de commande, exécutez la commande suivante pour stocker un nouveau secret nommé CacheConnection, après avoir remplacé les espaces réservés (y compris les crochets pointus) pour le nom de cache et la clé d’accès principale :

dotnet user-secrets set CacheConnection "<cache name>.redis.cache.windows.net,abortConnect=false,ssl=true,allowAdmin=true,password=<primary-access-key>"

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: configuration["CacheConnection"].ToString());

Dans RedisConnection.cs, vous voyez que l’espace de noms StackExchange.Redis a été ajouté au code. Cela 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.

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 id, string name, int age)
        {
            Id = id;
            Name = name;
            Age = age;
        }
    }

Exécution de l'exemple

Si vous avez ouvert des fichiers, enregistrez-les et générez l’application avec la commande suivante :

dotnet build

Exécutez l’application avec la commande suivante pour tester la sérialisation d’objets .NET :

dotnet run

Application console terminée

Nettoyer les ressources

Si vous continuez à utiliser ce guide de démarrage rapide, vous pouvez conserver les ressources que vous avez créées et les réutiliser.

Sinon, si vous avez terminé l’exemple d’application de démarrage rapide, vous pouvez supprimer les ressources Azure créées dans ce démarrage rapide afin d’éviter les 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.

Pour supprimer un groupe de ressources

  1. Connectez-vous au portail Azure, puis sélectionnez Groupes de ressources.

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

    Supprimer

  3. Il vous sera demandé de 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