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

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.In this quickstart, you incorporate Azure Cache for Redis into a .NET Framework 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.You specifically use the StackExchange.Redis client with C# code in a .NET console app.

PrérequisPrerequisites

Création d'un cacheCreate a cache

  1. Pour créer un cache, connectez-vous au portail Azure.To create a cache, first sign in to the Azure portal. Sélectionnez ensuite Créer une ressource > Bases de données > Cache Azure pour Redis.Then select Create a resource > Databases > Azure Cache for Redis.

    Menu Nouveau cache Azure pour Redis

  2. Dans Nouveau cache Azure pour Redis, configurez les paramètres du nouveau cache.In New Azure Cache for Redis, configure the settings for your new cache.

    ParamètreSetting Valeur suggéréeSuggested value DescriptionDescription
    Nom DNSDNS name Nom globalement uniqueGlobally unique name Le nom du cache.The cache name. Il doit être une chaîne de 1 à 63 caractères et contenir uniquement des chiffres, des lettres et le caractère -.It must be a string between 1 and 63 characters and contain only numbers, letters, and the - character. Le nom du cache ne peut ni commencer ni se terminer par le caractère - et il n’accepte pas de caractères - consécutifs.The cache name cannot start or end with the - character, and consecutive - characters are not valid.
    AbonnementSubscription Votre abonnementYour subscription L’abonnement sous lequel est créée cette nouvelle instance de cache Azure pour Redis.The subscription under which this new Azure Cache for Redis instance is created.
    Groupe de ressourcesResource group TestResourcesTestResources Nom du nouveau groupe de ressources dans lequel créer votre cache.Name for the new resource group in which to create your cache. En plaçant toutes les ressources d’une application dans un groupe, vous pouvez les gérer ensemble.By putting all the resources for an app in a group, you can manage them together. Par exemple, si vous supprimez le groupe de ressources, vous supprimez également toutes les ressources associées à l’application.For example, deleting the resource group deletes all resources that are associated with the app.
    LieuLocation USA EstEast US Choisissez une région à proximité des autres services qui utilisent votre cache.Choose a region near to other services that will use your cache.
    Niveau tarifairePricing tier De base C0 (cache de 250 Mo)Basic C0 (250 MB Cache) 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.
    Épingler au tableau de bordPin to dashboard Volumes sélectionnésSelected Épinglez le nouveau cache à votre tableau de bord pour en faciliter la recherche.Pin the new cache to your dashboard to make it easy to find.

    Créer un cache Azure pour Redis

  3. Une fois les paramètres du nouveau cache configurés, sélectionnez Créer.After the new cache settings are configured, select Create.

    La création du cache peut prendre plusieurs minutes.It can take a few minutes for the cache to be created. Pour vérifier l’état d’avancement de l’opération, vous pouvez consulter le tableau de bord.To check the status, you can monitor the progress on the dashboard. Après sa création, le nouveau cache indique l’état En cours d’exécution, et il est prêt à être utilisé.After the cache has been created, it shows the status Running, and is ready for use.

    Cache Azure pour Redis créé

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

Lors de la connexion à une instance de cache Azure pour Redis, les clients de cache ont besoin du nom d’hôte, des ports et d’une clé pour le cache.When connecting 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 ces informations dans le portail Azure.You can retrieve this information in the Azure portal.

Récupération des clés d'accès et du nom d’hôteTo retrieve the access keys and host name

  1. Pour récupérer les clés d’accès à l’aide du portail Azure, accédez à votre cache, puis sélectionnez Clés d’accès.To retrieve the access keys by using the Azure portal, go to your cache and select Access keys.

    Clés du cache Azure pour Redis

  2. Pour récupérer le nom d’hôte et les ports, sélectionnez Propriétés.To retrieve the host name and ports, select Properties.

    Propriétés du cache Azure pour Redis

Créez un fichier nommé CacheSecrets.config sur votre ordinateur, à un emplacement qui ne sera pas archivé avec le code source de votre exemple d’application.Create a file on your computer named CacheSecrets.config and place it in a location where it won't be checked in with the source code of your sample application. Pour ce guide de démarrage rapide, le fichier CacheSecrets.config se trouve à l’emplacement suivant : C:\AppSecrets\CacheSecrets.config.For this quickstart, the CacheSecrets.config file is located here, C:\AppSecrets\CacheSecrets.config.

Modifiez le fichier CacheSecrets.config et ajoutez le contenu suivant :Edit the CacheSecrets.config file and add the following contents:

<appSettings>
    <add key="CacheConnection" value="<cache-name>.redis.cache.windows.net,abortConnect=false,ssl=true,password=<access-key>"/>
</appSettings>

Remplacez <cache-name> par le nom d’hôte de votre cache.Replace <cache-name> with your cache host name.

Remplacez <access-key> par la clé primaire de votre cache.Replace <access-key> with the primary key for your cache.

Créer une application consoleCreate a console app

Dans Visual Studio, cliquez sur Fichier > Nouveau > Projet.In Visual Studio, click File > New > Project.

Sous Visual C# , cliquez sur Bureau Windows Classique puis cliquez sur Application Console et OK pour créer une nouvelle application console.Under Visual C#, click Windows Classic Desktop and then click Console App, and OK to create a new console application.

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 Visual Studio, cliquez sur Outils > Gestionnaire de package NuGet > Console du Gestionnaire de package, et exécutez la commande suivante à partir de la fenêtre de la Console du Gestionnaire de package.In Visual Studio, click Tools > NuGet Package Manager > Package Manager Console, and run the following command from the Package Manager Console window.

Install-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

Dans Visual Studio, ouvrez votre fichier App.config et mettez-le à jour pour inclure un attribut appSettings file faisant référence au fichier CacheSecrets.config.In Visual Studio, open your App.config file and update it to include an appSettings file attribute that references the CacheSecrets.config file.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.1" />
    </startup>

    <appSettings file="C:\AppSecrets\CacheSecrets.config"></appSettings>  

</configuration>

Dans l’Explorateur de solutions, cliquez avec le bouton droit sur Références et cliquez sur Ajouter une référence.In Solution Explorer, right-click References and click Add a reference. Ajoutez une référence à l’assembly System.Configuration.Add a reference to the System.Configuration assembly.

Ajoutez les instructions using ci-après à Program.cs :Add the following using statements to Program.cs:

using StackExchange.Redis;
using System.Configuration;

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.

Ne stockez jamais d’informations d’identification dans du code source.Never store credentials in source code. Pour garder cet exemple simple, j’utilise uniquement un fichier de configuration externe des secrets.To keep this sample simple, I’m only using an external secrets config file. Une meilleure approche serait d’utiliser Azure Key Vault avec des certificats.A better approach would be to use Azure Key Vault with certificates.

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 = ConfigurationManager.AppSettings["CacheConnection"].ToString();
            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 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.The value of the CacheConnection appSetting is used to reference the cache connection string from the Azure portal as the password parameter.

Exécution des commandes de cacheExecuting cache commands

Ajoutez le code suivant pour la procédure Main de la classe Program pour votre application console :Add the following code for the Main procedure of the Program class for your console application:

        static void Main(string[] args)
        {
            // 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 console app!\"";
            Console.WriteLine("\nCache command  : " + cacheCommand + " or StringSet()");
            Console.WriteLine("Cache response : " + cache.StringSet("Message", "Hello! The cache is working from a .NET 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();
        }

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. Le code se connecte à la base de données par défaut, 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.

Appuyez sur Ctrl+F5 pour générer et exécuter l’application console.Press Ctrl+F5 to build and run the console app.

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.

Dans Visual Studio, cliquez sur Outils > Gestionnaire de package NuGet > Console du Gestionnaire de package, et exécutez la commande suivante à partir de la fenêtre de la Console du Gestionnaire de package.In Visual Studio, click Tools > NuGet Package Manager > Package Manager Console, and run the following command from the Package Manager Console window.

Install-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");

Appuyez sur Ctrl + F5 pour générer et exécuter l’application console pour tester la sérialisation des objets .NET.Press Ctrl+F5 to build and run the console app to test serialization of .NET objects.

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.In this quickstart, you learned how to use Azure Cache for Redis from a .NET 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.