Entwicklung mit Azure Managed Redis

In diesem Artikel wird erläutert, wie Sie Code für Azure verwaltete Redis entwickeln.

Verbindungsresilienz und Serverauslastung

Berücksichtigen Sie bei der Entwicklung von Clientanwendungen die relevanten bewährten Methoden für die Ausfallsicherheit von Verbindungen und die Verwaltung der Serverlast.

Berücksichtigen Sie mehr Schlüssel und kleinere Werte

Azure Managed Redis funktioniert am besten mit kleineren Werten. Um die Daten über mehrere Schlüssel zu verteilen, sollten Sie größere Datenblöcke in kleinere Datenblöcke unterteilen. Weitere Informationen zur idealen Größengröße finden Sie in diesem Artikel.

Große Anforderungen oder große Antworten

Eine große Anforderung oder Antwort kann Zeitüberschreitungen verursachen. Angenommen, Sie konfigurieren den Timeoutwert auf Ihrem Client als 1 Sekunde. Ihre Anwendung fordert gleichzeitig zwei Schlüssel an (zum Beispiel A und B) (über dieselbe physische Netzwerkverbindung). Die meisten Clients unterstützen die Anforderungspipelineing, bei der beide Anforderungen A und B nacheinander gesendet werden, ohne auf ihre Antworten zu warten. Der Server sendet die Antworten in der gleichen Reihenfolge zurück. Wenn die Antwort A groß ist, kann sie einen Großteil des Timeouts für spätere Anfragen aufbrauchen.

Im folgenden Beispiel werden die Anfragen A und B schnell an den Server gesendet. Der Server beginnt mit dem Senden von Antworten A und B schnell. Aufgrund von Datenübertragungszeiten muss die Antwort B hinter den Antwortzeiten A warten, obwohl der Server schnell reagiert hat.

|-------- 1 Second Timeout (A)----------|
|-Request A-|
     |-------- 1 Second Timeout (B) ----------|
     |-Request B-|
            |- Read Response A --------|
                                       |- Read Response B-| (**TIMEOUT**)

Dieses Anforderungs- und Antwortmuster ist schwer zu messen. Sie könnten Ihren Clientcode für die Nachverfolgung von großen Anforderungen und Antworten instrumentieren.

Auflösungen für große Antwortgrößen variieren, umfassen jedoch:

  • Optimieren Sie Ihre Anwendung für eine große Anzahl von kleinen Werten, statt für wenige große Werte.
  • Erhöhen Sie die Größe Ihres virtuellen Computers (VM), um höhere Bandbreitenfunktionen zu erhalten.
    • Mehr Bandbreite auf ihrer Client- oder Server-VM kann die Datenübertragungszeiten für größere Antworten verringern.
    • Vergleichen Sie Ihre aktuelle Netzwerknutzung auf beiden Computern mit den Limits Ihrer aktuellen VM-Größe. Mehr Bandbreite nur auf dem Server oder nur auf dem Client ist möglicherweise nicht ausreichend.
  • Erhöhen Sie die Anzahl von Verbindungsobjekten, die Ihre Anwendung verwendet.
    • Verwenden Sie einen Roundrobinansatz, um Anforderungen über verschiedene Verbindungsobjekte auszuführen.

Verwenden Sie Pipelining

Versuchen Sie, einen Redis-Client auszuwählen, der Redis-Pipelining unterstützt. Pipelining hilft Ihnen dabei, das Netzwerk effizient zu nutzen und den bestmöglichen Durchsatz zu erzielen.

Vermeiden aufwändiger Vorgänge

Einige Redis-Vorgänge, z. B. der TASTEN-Befehl , sind teuer, und Sie sollten sie vermeiden. Einige Hinweise zu zeitintensiven Befehlen finden Sie unter Zeitintensive Befehle.

Wählen Sie eine passende Ebene aus

Azure Managed Redis bietet speicheroptimierte, ausgewogene, Compute-optimierte und Flash-optimierte Ebenen. Weitere Informationen zum Auswählen einer Stufe finden Sie unter Wie man skaliert. Testen Sie die Leistung, um den richtigen Tarif auszuwählen und die Verbindungseinstellungen zu validieren. Weitere Informationen finden Sie unter Leistungstests.

Auswählen eines geeigneten Verfügbarkeitsmodus

Azure Verwaltete Redis bietet die Möglichkeit, die Konfiguration für hohe Verfügbarkeit zu aktivieren oder zu deaktivieren. Wenn Sie den Modus für hohe Verfügbarkeit deaktivieren, werden die Daten in Ihrer AMR-Instanz nicht repliziert, und Ihre Redis-Instanz ist während der Wartung nicht verfügbar. Alle Daten in der AMR-Instanz gehen während geplanter oder ungeplanter Wartung verloren. Deaktivieren Sie hohe Verfügbarkeit nur für Ihre Entwicklungs- oder Testarbeitslasten. Die Leistung von Redis-Instanzen mit hoher Verfügbarkeit kann auch aufgrund des Mangels an Datenreplikation geringer sein, was eine wichtige Verteilung der Last zwischen primären und Replikatdatenshardien ist.

Client in derselben Region wie die Redis-Instanz

Positionieren Sie Ihre Redis-Instanz und Ihre Anwendung in der gleichen Region. Eine Verbindung mit einer Redis-Instanz in einer anderen Region herzustellen, kann die Latenz erheblich erhöhen und die Zuverlässigkeit reduzieren.

Sie können zwar eine Verbindung von außerhalb von Azure herstellen, es wird jedoch nicht empfohlen, insbesondere bei der Verwendung von Redis zum Beschleunigen der Anwendungs- oder Datenbankleistung. Wenn Sie Redis Server nur als einen Schlüssel-/Wertspeicher verwenden, ist Latenz möglicherweise kein Hauptaspekt.

Verwenden eines Hostnamens anstatt einer öffentlichen IP-Adresse

Die ihrem Cache zugewiesene IP-Adresse kann sich aufgrund eines Skalierungsvorgangs oder einer Back-End-Verbesserung ändern. Verwenden Sie den Hostnamen anstelle einer expliziten öffentlichen oder privaten IP-Adresse. Die konfigurierte statische IP-Adresse für einen Cache in einem virtuellen Netzwerk ist keine unveränderliche Garantie und kann sich während bestimmter Vorgänge ändern, obwohl Änderungen selten sind.

Hostnamen in Azure Managed Redis sehen wie folgt aus: <DNS name>.<Azure region>.redis.azure.net

Verwenden der TLS-Verschlüsselung

Azure Verwaltete Redis erfordert standardmäßig TLS-verschlüsselte Kommunikation. Derzeit werden die TLS-Versionen 1.2 und 1.3 unterstützt. Wenn Ihre Clientbibliothek oder Ihr Tool TLS nicht unterstützt, ist das Aktivieren unverschlüsselter Verbindungen möglich.

Überwachen der Arbeitsspeicherauslastung, CPU-Auslastungsmetriken, Clientverbindungen und Netzwerkbandbreite

Wenn Sie Azure Verwaltete Redis-Instanz in der Produktion verwenden, legen Sie Warnungen für Used Memory Percentage, CPUmetriken und Connected Clients fest. Wenn diese Metriken konsistent über 75 % liegen, sollten Sie ihre Instanz auf einen größeren Arbeitsspeicher oder eine bessere Durchsatzebene skalieren. Weitere Details finden Sie im Abschnitt zum Skalieren. Ausführliche Informationen dazu, wie Arbeitsspeicher gemeldet wird und wie Kapazität geplant wird, finden Sie unter Speicherverwaltung.

Erwägen Sie, Datenpersistenz oder Datensicherung zu aktivieren

Redis ist standardmäßig für kurzlebige Daten ausgelegt, was bedeutet, dass Ihre Daten in seltenen Fällen aufgrund verschiedener Umstände wie Wartung oder Ausfälle verloren gehen können. Wenn Ihre Anwendung anfällig für Datenverlust ist, aktivieren Sie die Datenpersistenz oder regelmäßige Datensicherungen mithilfe des Datenexportvorgangs.

Das Datenpersistenzfeature stellt automatisch einen schnellen Wiederherstellungspunkt für Daten bereit, wenn ein Cache abläuft. Die schnelle Wiederherstellung ist möglich, da das Feature die RDB- oder AOF-Datei auf einem verwalteten Datenträger speichert, der an die Cacheinstanz bereitgestellt wird. Benutzer können nicht auf Persistenzdateien auf dem Datenträger zugreifen, und keine andere AMR-Instanz kann sie verwenden.

Viele Kunden möchten die Persistenz nutzen, um regelmäßige Sicherungen der Daten in ihrem Cache durchzuführen. Verwenden Sie für diesen Zweck keine Datenpersistenz. Verwenden Sie stattdessen das Feature Importieren/Exportieren. Sie können Kopien von Daten im RDB-Format direkt in Ihr ausgewähltes Speicherkonto exportieren und den Datenexport mit der von Ihnen benötigten Frequenz auslösen. Sie können den Export entweder über das Portal oder mithilfe der CLI-, PowerShell- oder SDK-Tools auslösen.

Spezifische Anleitungen für die Clientbibliothek

Weitere Informationen finden Sie unter Azure Managed Redis Client libraries.