Partager via


Démarrage rapide : utiliser le cache Azure pour Redis avec une application .NET Core

Dans ce guide de démarrage rapide, vous incorporez Azure Cache 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

Cet article explique comment modifier le code d’un exemple d’application pour créer une application fonctionnelle qui se connecte à Azure Cache pour Redis.

Si vous voulez passer directement au code, consultez l’exemple de démarrage rapide .NET Core sur GitHub.

Prérequis

Création d'un cache

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

    Capture d’écran montrant l’option Créer une ressource mise en évidence dans le volet de navigation gauche du portail Azure.

  2. Dans le volet Démarrer, entrez Azure Cache pour Redis dans la barre de recherche. Dans les résultats de la recherche, localisez Azure Cache pour Redis, puis sélectionnez Créer.

    Capture d’écran montrant la Place de marché Azure avec Azure Cache pour Redis dans la zone de recherche et le bouton Créer mis en évidence.

  3. Dans le volet Nouveau Cache Redis, sous l’onglet Informations de base, configurez les paramètres suivants pour votre cache :

    Setting Action Description
    Abonnement Sélectionnez votre abonnement Azure. L’abonnement à utiliser pour créer l’instance d’Azure Cache pour Redis.
    Groupe de ressources Sélectionnez un groupe de ressources ou choisissez Créer nouveau, puis entrez un nouveau nom de groupe de ressources. Le 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 et des traits d’union. Le nom doit commencer et se terminer par un chiffre ou une lettre, et ne doit pas contenir de traits d’union consécutifs. Le nom d’hôte de votre instance de cache est \<DNS name>.redis.cache.windows.net.
    Emplacement Sélectionnez un emplacement. Une région Azure proche d’autres services qui utilisent votre cache.
    Référence SKU du cache Sélectionnez une référence SKU. La référence SKU détermine les paramètres de taille, de performance et de fonctionnalités disponibles pour le cache. Pour plus d’informations, consultez Présentation d’Azure Cache pour Redis.
    Taille du cache Sélectionnez une taille de cache. Pour plus d’informations, consultez Présentation d’Azure Cache pour Redis.
  4. Sélectionnez l’onglet Mise en réseau ou sélectionnez Suivant : mise en réseau.

  5. Sous l’onglet Mise en réseau, sélectionnez une méthode de connectivité à utiliser pour le cache.

  6. Sélectionnez l’onglet Avancé ou sélectionnez Suivant : avancé.

  7. Dans le volet Avancé, vérifiez ou sélectionnez une méthode d’authentification en fonction des informations suivantes :

    Capture d’écran montrant l’onglet Avancé et les options disponibles à sélectionner.

    • Par défaut, pour un nouveau cache Basic, Standard ou Premium, l’authentification Microsoft Entra est activée et l’authentification par clés d’accès est désactivée.
    • Pour les caches Basic ou Standard, vous pouvez choisir la sélection d'un port non TLS.
    • Pour les caches Standard et Premium, vous pouvez choisir d'activer les zones de disponibilité. Vous ne pouvez pas désactiver les zones de disponibilité une fois le cache créé.
    • 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.

    Important

    Pour bénéficier d’une sécurité optimale, nous vous recommandons d’utiliser si possible Microsoft Entra ID avec des identités managées pour autoriser les requêtes sur votre cache. L’autorisation avec Microsoft Entra ID et les identités managées offre davantage de sécurité et de facilité d’utilisation que l’autorisation par clé d’accès partagée. Pour plus d’informations sur l’utilisation d’identités managées avec votre cache, consultez Utiliser Microsoft Entra ID pour l’authentification du cache.

  8. (Facultatif) Sélectionnez l’onglet Étiquettes ou sélectionnez Suivant : étiquettes.

  9. (Facultatif) Sous l’onglet Étiquettes, entrez un nom et une valeur d’étiquette si vous voulez catégoriser votre ressource de cache.

  10. Sélectionnez le bouton Vérifier + Créer.

    Sous l’onglet Vérifier et créer, Azure vérifie automatiquement votre configuration.

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

Le déploiement d’un nouveau cache prend plusieurs minutes. Vous pouvez surveiller la progression du déploiement dans le volet Vue d’ensemble d’Azure Cache pour Redis. Lorsqu’État indique En cours d’exécution, le cache est prêt à être utilisé.

Obtenir le nom d’hôte, les ports et la clé d’accès

Pour se connecter à votre serveur Azure Cache pour Redis, le client de cache a besoin du nom d’hôte, des ports et d’une clé d’accès pour le cache. Certains clients peuvent référencer ces éléments en utilisant des noms légèrement différents. Vous pouvez obtenir le nom d’hôte, les ports et les clés dans le portail Azure.

  • Pour obtenir une clé d’accès pour votre cache :

    1. Dans le portail Azure, accédez à votre cache.
    2. Dans le menu du service, sous Paramètres, sélectionnez Authentification.
    3. Dans le volet Authentification, sélectionnez l’onglet Clés d’accès.
    4. Pour copier la valeur d’une clé d’accès, sélectionnez l’icône Copier dans le champ de la clé.

    Capture d’écran montrant comment trouver et copier une clé d’accès pour une instance d’Azure Cache pour Redis.

  • Pour obtenir le nom d’hôte et les ports de votre cache :

    1. Dans le portail Azure, accédez à votre cache.
    2. Dans le menu du service, sélectionnez Vue d’ensemble.
    3. Sous Fonctionnalités essentielles, pour Nom d’hôte, sélectionnez l’icône Copier pour copier la valeur du nom d’hôte. La valeur du nom d’hôte est de la forme <DNS name>.redis.cache.windows.net.
    4. Pour Ports, sélectionnez l’icône Copier pour copier les valeurs du port.

    Capture d’écran montrant comment trouver et copier le nom d’hôte et les ports d’une instance d’Azure Cache pour Redis.

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

Ajouter un secret local pour la chaîne de connexion

Dans votre fenêtre d’invite de commandes, exécutez la commande suivante pour stocker un nouveau secret nommé CacheConnection. Remplacez les espaces réservés (y compris les crochets angle) par le nom de votre cache (<cache name>) et la clé d’accès primaire (<primary-access-key>) :

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 en utilisant RedisConnection

La connexion au cache est gérée par la classe RedisConnection. Commencez par établir la connexion dans cette instruction dans Program.cs :

      _redisConnection = await RedisConnection.InitializeAsync(connectionString: configuration["CacheConnection"].ToString());

Dans RedisConnection.cs, l’espace de noms StackExchange.Redis est ajouté au code. L’espace de noms est requis pour la classe RedisConnection.

using StackExchange.Redis;

Le code de la classe RedisConnection vérifie qu’il existe toujours une connexion saine au cache. La connexion est gérée par l’instance ConnectionMultiplexer depuis StackExchange.Redis. La classe RedisConnection recrée la connexion quand une connexion est perdue et ne peut pas se reconnecter automatiquement.

Pour plus d’informations, consultez StackExchange.Redis et le code dans le dépôt GitHub StackExchange.Redis.

Exécuter 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}");
    }

Vous pouvez stocker et récupérer des éléments de cache à l’aide des méthodes et des méthodes StringSetAsync et StringGetAsync.

Dans l’exemple, vous pouvez voir que la clé Message est définie sur une valeur. 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 au format chaîne. Les chaînes peuvent contenir de nombreux types de données, notamment des données binaires sérialisées. Vous pouvez utiliser des données binaires sérialisées lorsque vous stockez des objets .NET dans le cache.

Azure Cache 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 de l’objet .NET est la responsabilité du développeur d’applications. La sérialisation d’objets offre la flexibilité du développeur dans son choix du 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 fichiers. Ensuite, déployez l’application à l’aide de la commande suivante :

dotnet build

Pour tester la sérialisation des objets .NET, exécutez cette commande :

dotnet run

Capture d’écran montrant un test de console terminé.

Nettoyer les ressources

Si vous souhaitez continuer à utiliser les ressources que vous avez créées dans cet article, conservez le groupe de ressources.

Sinon, pour éviter les frais liés aux ressources, si vous en avez terminé avec les ressources, vous pouvez supprimer le groupe de ressources Azure que vous avez créé.

Avertissement

La suppression d’un groupe de ressources est irréversible. Quand vous supprimez un groupe de ressources, toutes les ressources contenues dans ce groupe sont supprimées définitivement. Veillez à ne pas supprimer accidentellement des ressources ou un groupe de ressources incorrects. Si vous avez créé les ressources dans un groupe de ressources existant qui contient des ressources que vous voulez conserver, vous pouvez supprimer chaque ressource individuellement au lieu de supprimer le groupe de ressources.

Supprimer un groupe de ressources

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

  2. Sélectionnez le groupe de ressources à supprimer.

    S’il existe de nombreux groupes de ressources, dans Filtrer un champ, entrez le nom du groupe de ressources que vous avez créé pour effectuer les étapes de cet article. Dans la liste des résultats de la recherche, sélectionnez le groupe de ressources.

    Capture d’écran montrant une liste de groupes de ressources où choisir le groupe à supprimer.

  3. Sélectionnez Supprimer le groupe de ressources.

  4. Dans le volet Supprimer un groupe de ressources, entrez le nom de votre groupe de ressources pour confirmer, puis sélectionnez Supprimer.

    Capture d’écran montrant une zone qui nécessite l’entrée du nom de la ressource pour confirmer la suppression.

Après quelques instants, le groupe de ressources et toutes ses ressources sont supprimés.