Schnellstart: Verwenden von Azure Cache for Redis mit .NET Framework
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. Sie verwenden insbesondere den StackExchange.Redis-Client mit C#-Code in einer .NET-Konsolen-App.
Direktes Navigieren zum Code auf GitHub
Klonen Sie das Repository aus Azure-Samples/azure-cache-redis-samples auf GitHub.
Voraussetzungen
- Azure-Abonnement – Erstellen eines kostenlosen Kontos
- Visual Studio 2019
- .NET Framework 4 oder höher, das vom „StackExchange.Redis“-Client benötigt wird.
Erstellen eines Caches
Um einen Cache zu erstellen, melden Sie sich im Azure-Portal an. Klicken Sie im Menü des Portals auf Ressource erstellen.
Geben Sie auf der Seite Erste Schritte den Begriff Azure Cache for Redis in das Suchfeld ein. Suchen Sie in den Suchergebnissen nach Azure Cache for Redis, und wählen Sie dann Erstellen aus.
Konfigurieren Sie im Bereich Neuer Redis-Cache auf der Registerkarte Grundlagen die folgenden Einstellungen für Ihren Cache:
Einstellung Aktion Beschreibung Abonnement Wählen Sie Ihr Azure-Abonnement. Das Abonnement, das zum Erstellen der neuen Instanz von Azure Cache for Redis verwendet werden soll. Ressourcengruppe Wählen Sie eine Ressourcengruppe aus, oder wählen Sie Neu erstellen aus, und geben Sie einen Namen für eine neue Ressourcengruppe ein. Der Name der Ressourcengruppe, in der Ihr Cache und weitere Ressourcen erstellt werden. Wenn Sie alle Ihre App-Ressourcen in einer Ressourcengruppe zusammenfassen, können Sie sie einfacher gemeinsam verwalten oder löschen. DNS-Name Geben Sie einen eindeutigen Namen ein. Der Cachename muss eine Zeichenfolge mit 1 bis 63 Zeichen sein, die nur Zahlen, Buchstaben und Bindestriche enthält. Der Name muss mit einer Zahl oder einem Buchstaben beginnen und enden und darf keine aufeinanderfolgenden Bindestriche enthalten. Der Hostname Ihrer Cache-Instanz ist \<DNS name>.redis.cache.windows.net
.Location Wählen Sie einen Standort aus. Eine Azure-Region, die sich in der Nähe anderer Dienste befindet, die Ihren Cache verwenden. Cache-SKU Wählen Sie eine SKU aus. Die SKU bestimmt die Parameter für Größe, Leistung und Features, die für den Cache verfügbar sind. Weitere Informationen finden Sie unter Azure Cache for Redis. Cachegröße Wählen Sie eine Cachegröße aus. Weitere Informationen finden Sie unter Azure Cache for Redis. Wählen Sie die Registerkarte Netzwerk, oder wählen Sie Weiter: Netzwerk.
Wählen Sie auf der Registerkarte Netzwerk eine Konnektivitätsmethode für den Cache aus.
Wählen Sie die Registerkarte Erweitert aus, oder wählen Sie Weiter: Erweitert aus.
Überprüfen oder wählen Sie im Bereich Erweitert basierend auf den folgenden Informationen eine Authentifizierungsmethode aus:
- Standardmäßig ist für einen neuen Basic-, Standard- oder Premium-Cache die Microsoft Entra-Authentifizierung aktiviert und die Authentifizierung mit Zugriffsschlüsseln deaktiviert.
- Für Basic- oder Standard-Caches können Sie sich für die Auswahl eines Nicht-TLS-Ports entscheiden.
- Für Standard- und Premium-Caches können Sie Verfügbarkeitszonen aktivieren. Verfügbarkeitszonen können nach der Erstellung des Caches nicht deaktiviert werden.
- Konfigurieren Sie für ein Premium-Cache die Einstellungen für einen Nicht-TLS-Port, das Clustering, die verwaltete Identität und die Datenpersistenz.
Wichtig
Für eine optimale Sicherheit empfehlen wir, Microsoft Entra ID mit verwalteten Identitäten zu verwenden, um Anforderungen nach Möglichkeit für Ihren Cache zu autorisieren. Die Autorisierung mit Microsoft Entra ID und verwalteten Identitäten bietet eine höhere Sicherheit und Benutzerfreundlichkeit als die Autorisierung mit gemeinsam verwendetem Schlüssel. Weitere Informationen zum Verwenden verwalteter Identitäten mit Ihren Caches finden Sie unter Verwenden von Microsoft Entra ID für die Cacheauthentifizierung.
(Optional) Wählen Sie die Registerkarte Tags aus, oder wählen Sie Weiter: Tags aus.
Geben Sie optional auf der Registerkarte Tags den Namen und den Wert ein, wenn Sie die Cacheressource kategorisieren möchten.
Wählen Sie die Schaltfläche Überprüfen + erstellen aus.
Auf der Registerkarte Überprüfen und Erstellen überprüft Azure automatisch Ihre Konfiguration.
Wenn die grüne Meldung Validierung erfolgreich angezeigt wird, wählen Sie Erstellen aus.
Eine neue Cachebereitstellung dauert mehrere Minuten. Sie können den Fortschritt der Bereitstellung im Azure Cache for Redis -Übersichtsbereich überwachen. Wenn der Status Wird ausgeführt anzeigt, kann der Cache verwendet werden.
Aktivieren der auf Microsoft Entra ID basierenden Authentifizierung in Ihrem Cache
Wenn Sie über einen Cache verfügen, überprüfen Sie, ob die Microsoft Entra-Authentifizierung aktiviert wurde. Wenn nicht, aktivieren Sie sie. Wir empfehlen, Microsoft Entra ID für Ihre Apps zu verwenden.
Wählen Sie im Azure-Portal die Azure Cache for Redis-Instanz aus, in der Sie die tokenbasierte Microsoft Entra-Authentifizierung verwenden möchten.
Wählen Sie im Ressourcen-Menü die Option Authentifizierung aus.
Checken Sie im Arbeitsbereich ein, um zu sehen, ob Microsoft Entra-Authentifizierung aktivieren aktiviert ist. Wenn ja, können Sie fortfahren.
Wählen Sie Microsoft Entra-Authentifizierung aktivieren aus, und geben Sie einen gültigen Benutzernamen ein. Dem eingegebenen Benutzer wird automatisch standardmäßig die Datenbesitzer-Zugriffsrichtlinie zugewiesen, wenn Sie Speichernauswählen. Sie können auch eine verwaltete Identität oder einen Dienstprinzipal eingeben, um eine Verbindung mit Ihrer Cache-Instanz herzustellen.
In einem Popupdialogfeld wird angezeigt, in dem Sie gefragt werden, ob Sie Ihre Konfiguration aktualisieren möchten, und Sie werden informiert, dass es mehrere Minuten dauert. Wählen Sie Ja aus.
Wichtig
Sobald der Aktivierungsvorgang abgeschlossen ist, werden die Knoten in Ihrer Cache-Instanz neu gestartet, um die neue Konfiguration zu laden. Es wird empfohlen, diesen Vorgang während der Wartung oder außerhalb Ihrer Spitzenarbeitszeiten durchzuführen. Dieser Vorgang kann bis zu 30 Minuten in Anspruch nehmen.
Informationen zur Verwendung der Microsoft Entra-ID mit Azure CLI finden Sie auf den Referenzseiten für Identität.
Bearbeiten Sie die Datei App.config, und fügen Sie die folgenden Inhalte hinzu:
<appSettings> <add key="RedisHostName" value="your_redis_cache_hostname"/>
Ersetzen Sie „your_Azure_Redis_hostname“ durch Ihren Azure Redis-Hostnamen und Ihre Portnummern. Beispiel:
cache-name.eastus.redis.azure.net:10000
für Azure Cache for Redis Enterprise-Dienste undcache-name.redis.cache.windows.net:6380
für Azure Cache for Redis-Dienste.Speichern Sie die Datei .
Konfigurieren des Cacheclients
In diesem Abschnitt bereiten Sie die Konsolenanwendung für die Verwendung des StackExchange.Redis-Clients für .NET vor.
Wählen Sie in Visual Studio das Tools>NuGet-Paket-Manager>Paket-Manager-Konsole und führen Sie im Fenster der Paket-Manager-Konsole den folgenden Befehl aus.
Install-Package Microsoft.Azure.StackExchangeRedis
Nach Abschluss der Installation kann der StackExchange.Redis-Cacheclient für Ihr Projekt verwendet werden.
Verbinden mit dem Cache mittels RedisConnection
Die Verbindung mit Ihrem Cache wird von der RedisConnection
-Klasse verwaltet. Die Verbindung wird zuerst in dieser Anweisung von Program.cs
hergestellt:
_redisConnection = await RedisConnection.InitializeAsync(redisHostName: ConfigurationManager.AppSettings["RedisHostName"].ToString());
Der Wert der appSetting-Einstellung CacheConnection wird verwendet, um über das Azure-Portal auf die Cacheverbindungszeichenfolge als Kennwortparameter zu verweisen.
In RedisConnection.cs
sehen Sie den Namespace StackExchange.Redis
mit dem Schlüsselwort using
. Dies ist für die RedisConnection
-Klasse erforderlich.
using StackExchange.Redis;
Der RedisConnection
-Code stellt sicher, dass immer eine fehlerfreie Verbindung mit dem Cache besteht, indem die ConnectionMultiplexer
-Instanz von StackExchange.Redis
verwaltet wird. Die RedisConnection
-Klasse erstellt die Verbindung neu, wenn eine Verbindung verloren geht und diese nicht automatisch wieder hergestellt werden kann.
Weitere Informationen finden Sie unter StackExchange.Redis sowie den Code in einem GitHub-Repository.
Ausführen von Cachebefehlen
In program.cs
können Sie den folgenden Code für die RunRedisCommandsAsync
-Methode in der Program
-Klasse für die Konsolenanwendung sehen:
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}");
}
Cacheelemente können mit den Methoden StringSetAsync
und StringGetAsync
gespeichert und abgerufen werden.
Im Beispiel können Sie sehen, dass der Message
-Schlüssel auf den Wert festgelegt ist. Die App hat diesen zwischengespeicherten Wert aktualisiert. Außerdem hat die App den Befehl PING
ausgeführt.
Arbeiten mit .NET-Objekten im Cache
Der Redis-Server speichert die meisten Daten als Zeichenfolgen. Diese können jedoch unterschiedliche Datentypen enthalten, inklusive serialisierter Binärdaten, die zum Speichern von .NET-Objekten im Cache verwendet werden können.
Azure Cache for Redis kann sowohl .NET-Objekte als auch primitive Datentypen zwischenspeichern. .NET-Objekte müssen allerdings zunächst serialisiert werden.
Die Serialisierung des .NET-Objekts ist Aufgabe des Anwendungsentwicklers und überlässt dem Entwickler die Freiheit bei der Wahl des Serialisierers.
Eine einfache Möglichkeit zum Serialisieren von Objekten stellt die Verwendung der JsonConvert
-Serialisierungsmethoden in System.text.Json
dar.
Fügen Sie den Namespace System.text.Json
zu Visual Studio hinzu:
Klicken Sie auf Extras>NuGet-Paket-Manager>Paket-Manager-Konsole.
Führen Sie dann den folgenden Befehl im Fenster der Paket-Manager-Konsole aus.
Install-Package system.text.json
Die folgende Employee
-Klasse wurde in Program.cs definiert, damit mit dem Beispiel auch gezeigt werden kann, wie ein serialisiertes Objekt abgerufen und festgelegt wird:
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)
{
Id = employeeId;
Name = name;
Age = age;
}
}
Ausführen des Beispiels
Drücken Sie STRG+F5, um die Konsolen-App zum Testen der Serialisierung von .NET-Objekten zu erstellen und auszuführen.
Bereinigen von Ressourcen
Wenn Sie die in diesem Artikel erstellten Ressourcen weiterhin verwenden möchten, behalten Sie die Ressourcengruppe bei.
Wenn Sie die Ressourcen nicht mehr benötigen, können Sie die erstellte Azure-Ressourcengruppe ansonsten löschen, um Kosten zu vermeiden.
Wichtig
Das Löschen einer Ressourcengruppe kann nicht rückgängig gemacht werden. Beim Löschen einer Ressourcengruppe werden alle darin enthaltenen Ressourcen unwiderruflich gelöscht. Achten Sie daher darauf, dass Sie nicht versehentlich die falsche Ressourcengruppe oder die falschen Ressourcen löschen. Falls Sie die Ressourcen in einer vorhandenen Ressourcengruppe erstellt haben, die Ressourcen enthält, die Sie behalten wollen, können Sie jede Ressource einzeln löschen, statt die Ressourcengruppe zu löschen.
So löschen Sie eine Ressourcengruppe
Melden Sie sich beim Azure-Portal an, und wählen Sie anschließend Ressourcengruppen aus.
Wählen Sie die Ressourcengruppe aus, die Sie löschen möchten.
Wenn viele Ressourcengruppen vorhanden sind, verwenden Sie das Feld Nach einem beliebigen Feld filtern..., und geben Sie den Namen Ihrer Ressourcengruppe ein, die Sie für diesen Artikel erstellt haben. Wählen Sie die Ressourcengruppe in der Ergebnisliste aus.
Wählen Sie die Option Ressourcengruppe löschen.
Sie werden aufgefordert, das Löschen der Ressourcengruppe zu bestätigen. Geben Sie den Namen Ihrer Ressourcengruppe ein, und wählen Sie Löschen aus.
Daraufhin werden die Ressourcengruppe und alle darin enthaltenen Ressourcen gelöscht.