Démarrage rapide : Utiliser le cache Azure pour Redis avec une application .NET CoreQuickstart: Use Azure Cache for Redis with a .NET Core app

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.In this quickstart, you incorporate Azure Cache for Redis into a .NET Core app to have access to a secure, dedicated cache that is accessible from any application within Azure. Vous utiliserez spécifiquement le client StackExchange.Redis avec du code C# dans une application console .NET Core.You specifically use the StackExchange.Redis client with C# code in a .NET Core console app.

PrérequisPrerequisites

Création d'un cacheCreate a cache

  1. Pour créer un cache, connectez-vous au portail Azure, puis sélectionnez Créer une ressource.To create a cache, sign in to the Azure portal and select Create a resource.

    Sélectionnez Créer une ressource

  2. Dans la page Nouvelle, sélectionnez Bases de données, puis Azure Cache pour Redis.On the New page, select Databases and then select Azure Cache for Redis.

    Sélectionner Azure Cache pour Redis

  3. Dans la page Nouveau cache Redis, configurez les paramètres du nouveau cache.On the New Redis Cache page, configure the settings for your new cache.

    ParamètreSetting Valeur suggéréeSuggested value DescriptionDescription
    Nom DNSDNS name Entrez un nom globalement unique.Enter a globally unique name. 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.The cache name must be a string between 1 and 63 characters that contains only numbers, letters, or hyphens. Le nom doit commencer et se terminer par un chiffre ou une lettre, et ne peut pas contenir de traits d’union consécutifs.The name must start and end with a number or letter, and can't contain consecutive hyphens. Le nom d’hôte de votre instance de cache sera <nom DNS >.redims.cache.windows.net.Your cache instance's host name will be <DNS name>.redis.cache.windows.net.
    AbonnementSubscription Dans la liste déroulante, sélectionnez votre abonnement.Drop down and select your subscription. Abonnement sous lequel créer cette nouvelle instance d’Azure Cache pour Redis.The subscription under which to create this new Azure Cache for Redis instance.
    Groupe de ressourcesResource group 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.Drop down and select a resource group, or select Create new and enter a new resource group name. Nom du groupe de ressources dans lequel créer votre cache et d’autres ressources.Name for the resource group in which to create your cache and other resources. 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.By putting all your app resources in one resource group, you can easily manage or delete them together.
    LieuLocation Dans la liste déroulante, sélectionnez un emplacement.Drop down and select a location. Choisissez une Région proche d’autres services qui utiliseront votre cache.Select a region near other services that will use your cache.
    Niveau tarifairePricing tier Sélectionnez un Niveau tarifaire.Drop down and select a Pricing tier. Le niveau tarifaire détermine la taille, les performances et les fonctionnalités disponibles pour le cache.The pricing tier determines the size, performance, and features that are available for the cache. Pour plus d’informations, consultez Présentation du cache Azure pour Redis.For more information, see Azure Cache for Redis Overview.
  4. Sélectionnez Create (Créer).Select Create.

    Créer un cache Azure pour Redis

    La création du cache prend un certain temps.It takes a while for the cache to create. Vous pouvez surveiller la progression dans la page Vue d’ensemble du Azure Cache pour Redis.You can monitor progress on the Azure Cache for Redis Overview page. Lorsque État indique En cours d’exécution, le cache est prêt pour utilisation.When Status shows as Running, the cache is ready to use.

    Cache Azure pour Redis créé

Récupération du nom d’hôte, des ports et des clés d’accès à partir du portail AzureRetrieve host name, ports, and access keys from the Azure portal

Pour vous connecter à une instance Azure Cache pour Redis, les clients de cache ont besoin du nom d’hôte, des ports et d’une clé pour le cache.To connect to an Azure Cache for Redis instance, cache clients need the host name, ports, and a key for the cache. Certains clients peuvent référencer ces éléments par des noms légèrement différents.Some clients might refer to these items by slightly different names. Vous pouvez récupérer le nom d’hôte, les ports et les clés d’accès à partir du portail Azure.You can get the host name, ports, and keys from the Azure portal.

  • 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.To get the access keys, from your cache left navigation, select Access keys.

    Clés du cache Azure pour Redis

  • 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.To get the host name and ports, from your cache left navigation, select Properties. Le nom d'hôte prend la forme <Nom DNS>.redis.cache.windows.net.The host name is of the form <DNS name>.redis.cache.windows.net.

    Propriétés du cache Azure pour Redis

Prenez note du NOM D’HÔTE et de la clé d’accès PRINCIPALE.Make a note of the HOST NAME and the Primary access key. Vous utiliserez ces valeurs ultérieurement pour construire le secret CacheConnection.You will use these values later to construct the CacheConnection secret.

Créer une application consoleCreate a console app

Ouvrez une nouvelle fenêtre de commande et exécutez la commande suivante pour créer une nouvelle application console .NET Core :Open a new command window and execute the following command to create a new .NET Core console app:

dotnet new console -o Redistest

Dans votre fenêtre de commande, remplacez par le nouveau répertoire de projet Redistest.In your command window, change to the new Redistest project directory.

Ajouter Secret Manager au projetAdd Secret Manager to the project

Dans cette section, vous allez ajouter l’outil Secret Manager à votre projet.In this section, you will add the Secret Manager tool to your project. L’outil Secret Manager stocke les données sensibles pour les travaux de développement à l’extérieur de l’arborescence de votre projet.The Secret Manager tool stores sensitive data for development work outside of your project tree. Cette approche empêche le partage accidentel des secrets d’une application au sein du code source.This approach helps prevent the accidental sharing of app secrets within source code.

Ouvrez votre fichier Redistest.csproj.Open your Redistest.csproj file. Ajoutez un élément DotNetCliToolReference afin d’inclure Microsoft.Extensions.SecretManager.Tools.Add a DotNetCliToolReference element to include Microsoft.Extensions.SecretManager.Tools. Ajoutez également un élément UserSecretsId, comme indiqué ci-dessous, puis enregistrez le fichier.Also add a UserSecretsId element as shown below, and save the file.

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.0</TargetFramework>
    <UserSecretsId>Redistest</UserSecretsId>
  </PropertyGroup>
  <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="2.0.0" />
  </ItemGroup>
</Project>

Exécutez la commande suivante pour ajouter le package Microsoft.Extensions.Configuration.UserSecrets au projet :Execute the following command to add the Microsoft.Extensions.Configuration.UserSecrets package to the project:

dotnet add package Microsoft.Extensions.Configuration.UserSecrets

Exécutez la commande suivante pour restaurer vos packages :Execute the following command to restore your packages:

dotnet restore

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 :In your command window, execute the following command to store a new secret named CacheConnection, after replacing the placeholders (including angle brackets) for your cache name and primary access key:

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

Ajoutez l’instruction using suivante à Program.cs :Add the following using statement to Program.cs:

using Microsoft.Extensions.Configuration;

Ajoutez les membres suivants à la classe Program dans Program.cs.Add the following members to the Program class in Program.cs. Ce code initialise une configuration permettant d’accéder au secret de l’utilisateur pour la chaîne de connexion du cache Azure pour Redis.This code initializes a configuration to access the user secret for the Azure Cache for Redis connection string.

        private static IConfigurationRoot Configuration { get; set; }
        const string SecretName = "CacheConnection";

        private static void InitializeConfiguration()
        {
            var builder = new ConfigurationBuilder()
                .AddUserSecrets<Program>();

            Configuration = builder.Build();
        }

Configuration du client de cacheConfigure the cache client

Dans cette section, vous allez configurer l’application console pour utiliser le client StackExchange.Redis pour .NET.In this section, you will configure the console application to use the StackExchange.Redis client for .NET.

Dans la fenêtre de commande, exécutez la commande suivante dans le répertoire du projet Redistest :In your command window, execute the following command in the Redistest project directory:

dotnet add package StackExchange.Redis

Une fois l’installation terminée, le client de cache StackExchange.Redis est disponible pour être utilisé avec votre projet.Once the installation is completed, the StackExchange.Redis cache client is available to use with your project.

Connexion au cacheConnect to the cache

Ajoutez l’instruction using suivante à Program.cs :Add the following using statement to Program.cs:

using StackExchange.Redis;

La connexion au cache Azure pour Redis est gérée par la classe ConnectionMultiplexer.The connection to the Azure Cache for Redis is managed by the ConnectionMultiplexer class. Cette classe doit être partagée et réutilisée dans votre application cliente.This class should be shared and reused throughout your client application. Ne créez pas une nouvelle connexion pour chaque opération.Do not create a new connection for each operation.

Dans Program.cs, ajoutez les membres suivants à la classe Program de votre application console :In Program.cs, add the following members to the Program class of your console application:

        private static Lazy<ConnectionMultiplexer> lazyConnection = new Lazy<ConnectionMultiplexer>(() =>
        {
            string cacheConnection = Configuration[SecretName];
            return ConnectionMultiplexer.Connect(cacheConnection);
        });

        public static ConnectionMultiplexer Connection
        {
            get
            {
                return lazyConnection.Value;
            }
        }

Cette approche pour partager une instance ConnectionMultiplexer dans votre application utilise une propriété statique qui renvoie une instance connectée.This approach to sharing a ConnectionMultiplexer instance in your application uses a static property that returns a connected instance. Ce code fournit une méthode thread-safe permettant d’initialiser une seule instance ConnectionMultiplexer connectée.The code provides a thread-safe way to initialize only a single connected ConnectionMultiplexer instance. abortConnect a la valeur false, ce qui signifie que l’appel réussit même si aucune connexion au cache Azure pour Redis n’est établie.abortConnect is set to false, which means that the call succeeds even if a connection to the Azure Cache for Redis is not established. Une fonctionnalité clé de ConnectionMultiplexer est qu’il restaure automatiquement la connectivité au cache une fois que le problème réseau ou d’autres causes sont résolus.One key feature of ConnectionMultiplexer is that it automatically restores connectivity to the cache once the network issue or other causes are resolved.

La valeur du secret CacheConnection est accessible à l’aide du fournisseur de configuration Secret Manager et utilisée en tant que paramètre du mot de passe.The value of the CacheConnection secret is accessed using the Secret Manager configuration provider and used as the password parameter.

Exécution des commandes de cacheExecuting cache commands

Dans Program.cs, ajoutez le code suivant pour la procédure Main de la classe Program pour votre application console :In Program.cs, add the following code for the Main procedure of the Program class for your console application:

        static void Main(string[] args)
        {
            InitializeConfiguration();

            // Connection refers to a property that returns a ConnectionMultiplexer
            // as shown in the previous example.
            IDatabase cache = lazyConnection.Value.GetDatabase();

            // Perform cache operations using the cache object...

            // Simple PING command
            string cacheCommand = "PING";
            Console.WriteLine("\nCache command  : " + cacheCommand);
            Console.WriteLine("Cache response : " + cache.Execute(cacheCommand).ToString());

            // Simple get and put of integral data types into the cache
            cacheCommand = "GET Message";
            Console.WriteLine("\nCache command  : " + cacheCommand + " or StringGet()");
            Console.WriteLine("Cache response : " + cache.StringGet("Message").ToString());

            cacheCommand = "SET Message \"Hello! The cache is working from a .NET Core console app!\"";
            Console.WriteLine("\nCache command  : " + cacheCommand + " or StringSet()");
            Console.WriteLine("Cache response : " + cache.StringSet("Message", "Hello! The cache is working from a .NET Core console app!").ToString());

            // Demonstrate "SET Message" executed as expected...
            cacheCommand = "GET Message";
            Console.WriteLine("\nCache command  : " + cacheCommand + " or StringGet()");
            Console.WriteLine("Cache response : " + cache.StringGet("Message").ToString());

            // Get the client list, useful to see if connection list is growing...
            cacheCommand = "CLIENT LIST";
            Console.WriteLine("\nCache command  : " + cacheCommand);
            Console.WriteLine("Cache response : \n" + cache.Execute("CLIENT", "LIST").ToString().Replace("id=", "id="));

            lazyConnection.Value.Dispose();
        }

Enregistrez Program.cs.Save Program.cs.

Le cache Azure pour Redis dispose d’un nombre configurable de bases de données (16 par défaut) pouvant être utilisées pour séparer de manière logique les données dans un cache Azure pour Redis.Azure Cache for Redis has a configurable number of databases (default of 16) that can be used to logically separate the data within an Azure Cache for Redis. Le code se connecte à la base de données par défaut, DB 0.The code connects to the default database, DB 0. Pour plus d’informations, consultez les sections What are Redis databases? (Que sont les bases de données Redis ?) et Configuration du serveur Redis par défaut.For more information, see What are Redis databases? and Default Redis server configuration.

Les éléments de cache peuvent être stockés et extraits en utilisant les méthodes StringSet et StringGet.Cache items can be stored and retrieved by using the StringSet and StringGet methods.

Redis stocke la plupart des données sous la forme de chaînes Redis, 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.Redis stores most data as Redis strings, but these strings can contain many types of data, including serialized binary data, which can be used when storing .NET objects in the cache.

Exécutez la commande suivante dans la fenêtre de commande pour générer l’application :Execute the following command in your command window to build the app:

dotnet build

Exécutez ensuite l’application avec la commande suivante :Then run the app with the following command:

dotnet run

Dans l’exemple ci-dessous, vous pouvez voir que la clé Message présentait auparavant une valeur mise en cache, qui avait été définie à l’aide de la console Redis du portail Azure.In the example below, you can see the Message key previously had a cached value, which was set using the Redis Console in the Azure portal. L’application a mis à jour cette valeur mise en cache.The app updated that cached value. Elle a également exécuté les commandes PING et CLIENT LIST.The app also executed the PING and CLIENT LIST commands.

Application console partielle

Utilisation des objets .NET dans le cacheWork with .NET objects in the 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é.Azure Cache for Redis can cache both .NET objects and primitive data types, but before a .NET object can be cached it must be serialized. La sérialisation d’objet .NET échoit au développeur d’applications, qui a toute latitude pour choisir le sérialiseur.This .NET object serialization is the responsibility of the application developer, and gives the developer flexibility in the choice of the serializer.

Une méthode simple pour sérialiser des objets consiste à utiliser les méthodes de sérialisation JsonConvert dans Newtonsoft.Json et à sérialiser vers et à partir de JSON.One simple way to serialize objects is to use the JsonConvert serialization methods in Newtonsoft.Json and serialize to and from JSON. Dans cette section, vous allez ajouter un objet .NET dans le cache.In this section, you will add a .NET object to the cache.

Exécutez la commande suivante pour ajouter le package Newtonsoft.json à l’application :Execute the following command to add the Newtonsoft.json package to the app:

dotnet add package Newtonsoft.json

Ajoutez l’instruction using suivante au début de Program.cs :Add the following using statement to the top of Program.cs:

using Newtonsoft.Json;

Ajoutez la définition de classe Employee suivante à Program.cs :Add the following Employee class definition to Program.cs:

        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)
            {
                this.Id = EmployeeId;
                this.Name = Name;
                this.Age = Age;
            }
        }

Au bas de la procédure Main() dans Program.cset avant l’appel à Dispose(), ajoutez les lignes de code suivantes à mettre en cache et récupérez un objet .NET sérialisé :At the bottom of Main() procedure in Program.cs, and before the call to Dispose(), add the following lines of code to cache and retrieve a serialized .NET object:

            // Store .NET object to cache
            Employee e007 = new Employee("007", "Davide Columbo", 100);
            Console.WriteLine("Cache response from storing Employee .NET object : " + 
                cache.StringSet("e007", JsonConvert.SerializeObject(e007)));

            // Retrieve .NET object from cache
            Employee e007FromCache = JsonConvert.DeserializeObject<Employee>(cache.StringGet("e007"));
            Console.WriteLine("Deserialized Employee .NET object :\n");
            Console.WriteLine("\tEmployee.Name : " + e007FromCache.Name);
            Console.WriteLine("\tEmployee.Id   : " + e007FromCache.Id);
            Console.WriteLine("\tEmployee.Age  : " + e007FromCache.Age + "\n");

Enregistrez Program.cs et régénérez l’application avec la commande suivante :Save Program.cs and rebuild the app with the following command:

dotnet build

Exécutez l’application avec la commande suivante pour tester la sérialisation d’objets .NET :Run the app with the following command to test serialization of .NET objects:

dotnet run

Application console terminée

Supprimer des ressourcesClean up resources

Si vous envisagez d’exécuter le didacticiel suivant, vous pouvez conserver les ressources créées dans le cadre de ce guide de démarrage rapide afin de les réutiliser.If you will be continuing to the next tutorial, you can keep the resources created in this quickstart and reuse them.

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.Otherwise, if you are finished with the quickstart sample application, you can delete the Azure resources created in this quickstart to avoid charges.

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.Deleting a resource group is irreversible and that the resource group and all the resources in it are permanently deleted. Veillez à ne pas supprimer accidentellement des ressources ou un groupe de ressources incorrects.Make sure that you do not accidentally delete the wrong resource group or resources. 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 à partir de son panneau respectif, au lieu de supprimer l’intégralité du groupe de ressources.If you created the resources for hosting this sample inside an existing resource group that contains resources you want to keep, you can delete each resource individually from their respective blades instead of deleting the resource group.

Connectez-vous au Portail Azure et cliquez sur Groupes de ressources.Sign in to the Azure portal and click Resource groups.

Dans la zone de texte Filtrer par nom. , saisissez le nom de votre groupe de ressources.In the Filter by name... textbox, type the name of your resource group. Les instructions de cet article ont utilisé un groupe de ressources nommé TestResources.The instructions for this article used a resource group named TestResources. Sur votre groupe de ressources dans la liste des résultats, cliquez sur ... , puis sur Supprimer le groupe de ressources.On your resource group in the result list, click ... then Delete resource group.

Supprimer

Il vous sera demandé de confirmer la suppression du groupe de ressources.You will be asked to confirm the deletion of the resource group. Saisissez le nom de votre groupe de ressources pour confirmer, puis cliquez sur Supprimer.Type the name of your resource group to confirm, and click Delete.

Après quelques instants, le groupe de ressources et toutes les ressources qu’il contient sont supprimés.After a few moments, the resource group and all of its contained resources are deleted.

Étapes suivantesNext steps

Dans ce guide de démarrage rapide, vous avez appris à utiliser le cache Azure pour Redis à partir d’une application .NET Core.In this quickstart, you learned how to use Azure Cache for Redis from a .NET Core application. Passez au guide de démarrage rapide suivant pour utiliser le cache Azure pour Redis avec une application web ASP.NET.Continue to the next quickstart to use Azure Cache for Redis with an ASP.NET web app.