Schnellstart: Verwenden von Azure Cache for Redis mit einer .NET Framework-AnwendungQuickstart: Use Azure Cache for Redis with a .NET Framework application

In dieser Schnellstartanleitung integrieren Sie Azure Cache für Redis in eine .NET Framework-App, um Zugriff auf einen sicheren, dedizierten Cache zu erhalten, der von jeder Anwendung in Azure aus zugänglich ist.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. Sie verwenden insbesondere den StackExchange.Redis-Client mit C#-Code in einer .NET-Konsolen-App.You specifically use the StackExchange.Redis client with C# code in a .NET console app.

VoraussetzungenPrerequisites

Erstellen eines CachesCreate a cache

  1. Melden Sie sich zum Erstellen eines Caches beim Azure-Portal an, und wählen Sie Ressource erstellen aus.To create a cache, sign in to the Azure portal and select Create a resource.

    Auswählen von „Ressource erstellen“

  2. Wählen Sie auf der Seite Neu die Option Datenbanken und dann Azure Cache for Redis aus.On the New page, select Databases and then select Azure Cache for Redis.

    Auswählen von „Azure Cache for Redis“

  3. Konfigurieren Sie auf der Seite Neuer Redis Cache die Einstellungen für den neuen Cache.On the New Redis Cache page, configure the settings for your new cache.

    EinstellungSetting Vorgeschlagener WertSuggested value BESCHREIBUNGDescription
    DNS-NameDNS name Geben Sie einen global eindeutigen Namen ein.Enter a globally unique name. Der Cachename muss zwischen 1 und 63 Zeichen lang sein und darf nur Zahlen, Buchstaben und Bindestriche enthalten.The cache name must be a string between 1 and 63 characters that contains only numbers, letters, or hyphens. Der Name muss mit einer Zahl oder einem Buchstaben beginnen und enden und darf keine aufeinanderfolgenden Bindestriche enthalten.The name must start and end with a number or letter, and can't contain consecutive hyphens. Der Hostname Ihrer Cache-Instanz lautet <DNS-Name>.redis.cache.windows.net.Your cache instance's host name will be <DNS name>.redis.cache.windows.net.
    AbonnementSubscription Öffnen Sie die Dropdownliste, und wählen Sie Ihr Abonnement aus.Drop down and select your subscription. Das Abonnement, unter dem diese neue Azure Cache for Redis-Instanz erstellt wird.The subscription under which to create this new Azure Cache for Redis instance.
    RessourcengruppeResource group Öffnen Sie die Dropdownliste, und wählen Sie eine Ressourcengruppe aus, oder wählen Sie Neu erstellen aus, und geben Sie einen Namen für eine neue Ressourcengruppe ein.Drop down and select a resource group, or select Create new and enter a new resource group name. Der Name der Ressourcengruppe, in der Ihr Cache und weitere Ressourcen erstellt werden.Name for the resource group in which to create your cache and other resources. Wenn Sie alle Ihre App-Ressourcen in einer Ressourcengruppe zusammenfassen, können Sie sie einfacher gemeinsam verwalten oder löschen.By putting all your app resources in one resource group, you can easily manage or delete them together.
    LocationLocation Öffnen Sie die Dropdownliste, und wählen Sie einen Standort aus.Drop down and select a location. Wählen Sie eine Region in der Nähe anderer Dienste aus, die Ihren Cache verwenden.Select a region near other services that will use your cache.
    PreisstufePricing tier Öffnen Sie die Dropdownliste, und wählen Sie einen Tarif aus.Drop down and select a Pricing tier. Der Tarif bestimmt Größe, Leistung und verfügbare Features für den Cache.The pricing tier determines the size, performance, and features that are available for the cache. Weitere Informationen finden Sie unter What is Azure Cache for Redis (Was ist Azure Cache for Redis?).For more information, see Azure Cache for Redis Overview.
  4. Klicken Sie auf Erstellen.Select Create.

    Erstellen von Azure Cache for Redis

    Es dauert eine Weile, bis der Cache erstellt wird.It takes a while for the cache to create. Sie können den Fortschritt auf der Seite Übersicht von Azure Cache for Redis überwachen.You can monitor progress on the Azure Cache for Redis Overview page. Wenn Wird ausgeführt als Status angezeigt wird, ist der Cache einsatzbereit.When Status shows as Running, the cache is ready to use.

    Azure Cache for Redis erstellt

Abrufen von Hostname, Ports und Zugriffsschlüsseln vom Azure-PortalRetrieve host name, ports, and access keys from the Azure portal

Um eine Verbindung mit einer Azure Cache for Redis-Instanz herzustellen, benötigen Cacheclients den Hostnamen, die Ports und einen Schlüssel für den Cache.To connect to an Azure Cache for Redis instance, cache clients need the host name, ports, and a key for the cache. Von einigen Clients wird unter Umständen mit etwas anderen Namen auf diese Elemente verwiesen.Some clients might refer to these items by slightly different names. Sie können den Hostnamen, Ports und Zugriffsschlüssel vom Azure-Portal abrufen.You can get the host name, ports, and keys from the Azure portal.

  • Wählen Sie Zugriffsschlüssel aus, um die Zugriffsschlüssel aus dem linken Navigationsbereich des Cache abzurufen.To get the access keys, from your cache left navigation, select Access keys.

    Azure Cache for Redis-Schlüssel

  • Wählen Sie Eigenschaften aus, um den Hostnamen und die Ports aus dem linken Navigationsbereich des Cache abzurufen.To get the host name and ports, from your cache left navigation, select Properties. Der Hostname hat das Format <DNS-Name>.redis.cache.windows.net.The host name is of the form <DNS name>.redis.cache.windows.net.

    Azure Cache for Redis-Eigenschaften

Erstellen Sie auf Ihrem Computer eine Datei namens CacheSecrets.config, und platzieren Sie die Datei an einem Speicherort, an dem sie nicht mit dem Quellcode Ihrer Beispielanwendung eingecheckt wird.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. In diesem Schnellstart befindet sich die Datei CacheSecrets.config im Verzeichnis C:\AppSecrets\CacheSecrets.config.For this quickstart, the CacheSecrets.config file is located here, C:\AppSecrets\CacheSecrets.config.

Bearbeiten Sie die Datei CacheSecrets.config, und fügen Sie ihr folgende Inhalte hinzu: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>

Ersetzen Sie <cache-name> durch den Cachehostnamen.Replace <cache-name> with your cache host name.

Ersetzen Sie <access-key> durch den Primärschlüssel für Ihren Cache.Replace <access-key> with the primary key for your cache.

Erstellen einer Konsolen-AppCreate a console app

Klicken Sie in Visual Studio auf Datei > Neu > Projekt.In Visual Studio, click File > New > Project.

Klicken Sie unter Visual C# auf den klassischen Windows-Desktop und dann auf Konsolen-App und OK, um eine neue Konsolenanwendung zu erstellen.Under Visual C#, click Windows Classic Desktop and then click Console App, and OK to create a new console application.

Konfigurieren des CacheclientsConfigure the cache client

In diesem Abschnitt konfigurieren Sie die Konsolenanwendung zur Verwendung des StackExchange.Redis-Clients für .NET.In this section, you will configure the console application to use the StackExchange.Redis client for .NET.

Klicken Sie in Visual Studio auf Tools > NuGet-Paket-Manager > Paket-Manager-Konsole, und führen Sie im Fenster der Paket-Manager-Konsole den folgenden Befehl aus.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

Nach Abschluss der Installation kann der StackExchange.Redis-Cacheclient für Ihr Projekt verwendet werden.Once the installation is completed, the StackExchange.Redis cache client is available to use with your project.

Herstellen einer Verbindung mit dem CacheConnect to the cache

Öffnen Sie in Visual Studio die Datei App.config, und aktualisieren Sie sie, damit sie ein appSettings-file-Attribut enthält, das auf die Datei CacheSecrets.config verweist.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>

Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Verweise, und klicken Sie anschließend auf Verweis hinzufügen.In Solution Explorer, right-click References and click Add a reference. Fügen Sie einen Verweis auf die Assembly System.Configuration hinzu.Add a reference to the System.Configuration assembly.

Fügen Sie der Datei Program.cs die folgenden using-Anweisungen hinzu:Add the following using statements to Program.cs:

using StackExchange.Redis;
using System.Configuration;

Die Verbindung mit Azure Cache for Redis wird durch die Klasse ConnectionMultiplexer verwaltet.The connection to the Azure Cache for Redis is managed by the ConnectionMultiplexer class. Diese Klasse sollte für Ihre gesamte Clientanwendung genutzt und wiederverwendet werden.This class should be shared and reused throughout your client application. Erstellen Sie nicht für jeden Vorgang eine neue Verbindung.Do not create a new connection for each operation.

Speichern Sie niemals Anmeldeinformationen im Quellcode.Never store credentials in source code. Hier wird nur eine externe Konfigurationsdatei für Geheimnisse verwendet, um dieses Beispiel einfach zu halten.To keep this sample simple, I’m only using an external secrets config file. Ein besserer Ansatz wäre die Nutzung von Azure Key Vault mit Zertifikaten.A better approach would be to use Azure Key Vault with certificates.

Fügen Sie in der Datei Program.cs der Program-Klasse Ihrer Konsolenanwendung die folgenden Member hinzu: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;
            }
        }

Bei diesem Ansatz zum Freigeben einer ConnectionMultiplexer-Instanz in Ihrer Anwendung wird eine statische Eigenschaft verwendet, die eine verbundene Instanz zurückgibt.This approach to sharing a ConnectionMultiplexer instance in your application uses a static property that returns a connected instance. Dieser Code ist eine threadsichere Möglichkeit, um nur eine einzelne verbundene ConnectionMultiplexer-Instanz zu initialisieren.The code provides a thread-safe way to initialize only a single connected ConnectionMultiplexer instance. abortConnect ist auf „false“ festgelegt. Das bedeutet, dass der Aufruf erfolgreich ist, auch wenn keine Verbindung mit Azure Cache for Redis hergestellt wird.abortConnect is set to false, which means that the call succeeds even if a connection to the Azure Cache for Redis is not established. Eine wichtige Funktion von ConnectionMultiplexer ist, dass die Verbindung mit dem Cache automatisch wiederhergestellt wird, sobald das Netzwerkproblem oder andere Ursachen beseitigt wurden.One key feature of ConnectionMultiplexer is that it automatically restores connectivity to the cache once the network issue or other causes are resolved.

Der Wert der appSetting-Einstellung CacheConnection wird verwendet, um über das Azure-Portal auf die Cacheverbindungszeichenfolge als Kennwortparameter zu verweisen.The value of the CacheConnection appSetting is used to reference the cache connection string from the Azure portal as the password parameter.

Ausführen von CachebefehlenExecuting cache commands

Fügen Sie den folgenden Code für die Prozedur Main der Program-Klasse Ihrer Konsolenanwendung hinzu: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();
        }

Für Azure Cache for Redis kann eine konfigurierbare Anzahl von Datenbanken (standardmäßig 16) konfiguriert werden, mit denen die Daten innerhalb einer Azure Cache for Redis-Instanz logisch getrennt werden können. Der Code stellt eine Verbindung mit der Standarddatenbank (DB 0) her. Weitere Informationen finden Sie unter Was sind Redis-Datenbanken? und Standardmäßige Redis-Serverkonfiguration.For more information, see What are Redis databases? and Default Redis server configuration.

Cacheelemente können mit den Methoden StringSet und StringGet gespeichert und abgerufen werden.Cache items can be stored and retrieved by using the StringSet and StringGet methods.

Redis speichert die meisten Daten als Redis-Zeichenfolgen. Diese können jedoch unterschiedliche Datentypen enthalten, inklusive serialisierter Binärdaten, die zum Speichern von .NET-Objekten im Cache verwendet werden können.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.

Drücken Sie STRG+F5, um die Konsolen-App zu erstellen und auszuführen.Press Ctrl+F5 to build and run the console app.

Im folgenden Beispiel können Sie sehen, dass der Message-Schlüssel zuvor einen zwischengespeicherten Wert aufgewiesen hat, der im Azure-Portal über die Redis-Konsole festgelegt wurde.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. Die App hat diesen zwischengespeicherten Wert aktualisiert.The app updated that cached value. Außerdem hat die App die Befehle PING und CLIENT LIST ausgeführt.The app also executed the PING and CLIENT LIST commands.

Konsolen-App – Partiell

Arbeiten mit .NET-Objekten im CacheWork with .NET objects in the cache

Azure Cache for Redis kann sowohl .NET-Objekte als auch primitive Datentypen zwischenspeichern. .NET-Objekte müssen allerdings zunächst serialisiert werden.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. Die Serialisierung des .NET-Objekts ist Aufgabe des Anwendungsentwicklers und überlässt dem Entwickler die Freiheit bei der Wahl des Serialisierers.This .NET object serialization is the responsibility of the application developer, and gives the developer flexibility in the choice of the serializer.

Eine einfache Möglichkeit zum Serialisieren von Objekten stellt die Verwendung der JsonConvert-Serialisierungsmethoden in Newtonsoft.Json und die Serialisierung in und aus JSON dar.One simple way to serialize objects is to use the JsonConvert serialization methods in Newtonsoft.Json and serialize to and from JSON. In diesem Abschnitt fügen Sie dem Cache ein .NET-Objekt hinzu.In this section, you will add a .NET object to the cache.

Klicken Sie in Visual Studio auf Tools > NuGet-Paket-Manager > Paket-Manager-Konsole, und führen Sie im Fenster der Paket-Manager-Konsole den folgenden Befehl aus.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

Fügen Sie am Anfang der Datei Program.cs die folgende using-Anweisung hinzu:Add the following using statement to the top of Program.cs:

using Newtonsoft.Json;

Fügen Sie der Datei Program.cs die folgende Employee-Klassendefinition hinzu: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;
            }
        }

Fügen Sie in Program.cs am unteren Ende der Prozedur Main() und vor dem Aufruf von Dispose() die folgenden Codezeilen hinzu, um ein serialisiertes .NET-Objekt zwischenzuspeichern und abzurufen: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");

Drücken Sie STRG+F5, um die Konsolen-App zum Testen der Serialisierung von .NET-Objekten zu erstellen und auszuführen.Press Ctrl+F5 to build and run the console app to test serialization of .NET objects.

Konsolen-App abgeschlossen

Bereinigen von RessourcenClean up resources

Falls Sie mit dem nächsten Tutorial fortfahren möchten, können Sie die in dieser Schnellstartanleitung erstellten Ressourcen beibehalten und wiederverwenden.If you will be continuing to the next tutorial, you can keep the resources created in this quickstart and reuse them.

Wenn Sie die Schnellstart-Beispielanwendung nicht mehr benötigen, können Sie die in dieser Schnellstartanleitung erstellten Azure-Ressourcen löschen, um das Anfallen von Kosten zu vermeiden.Otherwise, if you are finished with the quickstart sample application, you can delete the Azure resources created in this quickstart to avoid charges.

Wichtig

Das Löschen einer Ressourcengruppe kann nicht rückgängig gemacht werden. Die Ressourcengruppe und alle darin enthaltenen Ressourcen werden also dauerhaft gelöscht.Deleting a resource group is irreversible and that the resource group and all the resources in it are permanently deleted. Achten Sie daher darauf, dass Sie nicht versehentlich die falsche Ressourcengruppe oder die falschen Ressourcen löschen.Make sure that you do not accidentally delete the wrong resource group or resources. Falls Sie die Ressourcen zum Hosten dieses Beispiels in einer vorhandenen Ressourcengruppe erstellt haben, die beizubehaltende Ressourcen enthält, können Sie die Ressourcen einzeln über das jeweilige Blatt löschen, statt die Ressourcengruppe zu löschen.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.

Melden Sie sich beim Azure-Portal an, und klicken Sie auf Ressourcengruppen.Sign in to the Azure portal and click Resource groups.

Geben Sie im Textfeld Nach Name filtern... den Namen Ihrer Ressourcengruppe ein.In the Filter by name... textbox, type the name of your resource group. In diesem Artikel wurde eine Ressourcengruppe mit dem Namen TestResources verwendet.The instructions for this article used a resource group named TestResources. Klicken Sie in Ihrer Ressourcengruppe in der Ergebnisliste auf ... und dann auf Ressourcengruppe löschen.On your resource group in the result list, click ... then Delete resource group.

Löschen

Sie werden aufgefordert, das Löschen der Ressourcengruppe zu bestätigen.You will be asked to confirm the deletion of the resource group. Geben Sie den Namen der entsprechenden Ressourcengruppe ein, und klicken Sie auf Löschen.Type the name of your resource group to confirm, and click Delete.

Daraufhin werden die Ressourcengruppe und alle darin enthaltenen Ressourcen gelöscht.After a few moments, the resource group and all of its contained resources are deleted.

Nächste SchritteNext steps

In dieser Schnellstartanleitung wurde beschrieben, wie Sie Azure Cache for Redis über eine .NET-Anwendung verwenden.In this quickstart, you learned how to use Azure Cache for Redis from a .NET application. In der nächsten Schnellstartanleitung erfahren Sie, wie Sie Azure Cache for Redis mit einer ASP.NET-Web-App verwenden.Continue to the next quickstart to use Azure Cache for Redis with an ASP.NET web app.