Bewährte Vorgehensweisen für Databases for Redis
Nehmen Sie sich Zeit, um die folgenden Best Practices zu prüfen, die empfohlen werden, wenn Sie Databases for Redisverwenden.
Was ist Databases for Redis?
Databases for Redis ist ein verwalteter OSS-Dienst für „ Redis “, der unter IBM Cloud angeboten wird. Dies ist ein speicherinterner Datenstrukturspeicher , der als Datenbank, Cache, Nachrichtenbroker und Streaming-Engine verwendet wird. Im Gegensatz zu herkömmlichen Datenbanken, die Daten auf Platte speichern, speichert Redis Daten im Speicher (RAM) und ermöglicht so eine geringe Latenzzeit. Die Daten sind _ephemere_Daten, die es Databases for Redis ermöglichen, eine hohe Leistung und einen hohen Durchsatz zu bieten. Sie können auch konfigurieren Redis, dass Daten dauerhaft auf der Festplatte gespeichert werden, indem Sie einen Kompromiss zwischen Leistung und Datenverfügbarkeit eingehen, da dies durch die Aktivierung der AOF-Synchronisierung (Append Only File) mit RDB-Snapshots erreicht wird.
RDB-Snapshots sind für Backups und Hochverfügbarkeit aktiviert, auch wenn die Persistenz deaktiviert ist.
Best Practices für die Kapazitätsplanung
Sie müssen die Databases for Redis-Instanzkapazität basierend auf Ihrem Anwendungs-und Architekturdesign planen, Hardwarevoraussetzungen verstehen und sich auf die Zunahme oder Abnahme der Nachfrage vorbereiten. Die folgenden Empfehlungen können Ihnen dabei helfen, die Größe Ihrer Instanz zu optimieren.
- Daten verstehen
- Es wird erwartet, dass Sie die Datentypen, die Größe und die Lebensdauer Ihrer Daten kennen. Dies hilft Ihnen zu verstehen, wie lange Daten im Speicher verfügbar sind, bevor sie gelöscht oder verschoben werden.
- Speicherbedarf schätzen
- Es ist wichtig, den Speicherbedarf zu berechnen. Denken Sie daran, nicht nur Ihre Daten zu berücksichtigen, sondern auch den Speicher, der für die Replikation, Clientverbindungen, maximale Speicherpuffer und Redis-Metadaten erforderlich ist.
- Lese-/Schreibvorgänge verstehen
- Die Ermittlung Ihrer Lese-und Schreiblasten hilft Ihnen, sich auf Anforderungen für die automatische Skalierung vorzubereiten, Ihre Anwendungsanforderungen zu berücksichtigen und die Master-Follower-Synchronisation aufrechtzuerhalten.
- Verstehen Sie Ihre IOPS-Anforderungen
- Ein-/Ausgabeoperationen pro Sekunde sind ein Schlüsselfaktor, den Sie bei der Kapazitätsplanung für Instanzen berücksichtigen sollten. Databases for Redis erstellt in regelmäßigen Abständen RDB-Momentaufnahmen gemäß der Standardkonfiguration von Redis, die die Platte auch dann verwendet, wenn Ihre Instanz für den Cache konfiguriert ist. Bei stark ausgelasteten Datenbanken kann es vorkommen, dass die IOPS-Rate die für die Festplattengröße vorgesehene Obergrenze überschreitet; eine Vergrößerung der Festplatte kann einen Leistungsengpass beheben.
- Planung für Redundanz und Verbindungswiederholungen
- Es gibt mehrere Komponenten, die an der Cloudberechnung beteiligt sind, was zu vorübergehenden Fehlern führen kann. Unter IBM® Cloud Databasesbieten wir jedoch eine Hochverfügbarkeit von 99.99% an und empfehlen Ihnen, Verbindungsblips in Ihrem Anwendungsdesign mithilfe von Wiederholungs-und Verbindungswiederholungslogik zu planen.
- Netzbandbreite berücksichtigen
- Ihre Netzbandbreite kann sich erheblich auf die Leistung von Databases for Redis auswirken. Stellen Sie sicher, dass Sie über ausreichende Netzbandbreite verfügen, um Ihre Datenbanklasten zu verarbeiten.
- Überwachung und Anpassungen
- Wir empfehlen, die Leistung und Nutzung Ihrer Databases for Redis-Instanz mithilfe von IBM Cloud® Monitoring zu überwachen, um das sich entwickelnde Nutzungsmuster Ihrer Datenbankinstanz zu ermitteln und die Größe nach Bedarf anzupassen.
Best Practices für die Leistung
- Persistenz inaktivieren
- Standardmäßig ist bei Databases for Redis die Persistenz aktiviert. Dadurch wird die AOF-Synchronisation geschrieben und die IOPS-Belastung erhöht. Wenn Ihre Anwendung keine Daten persistent speichern muss, inaktivieren Sie dies mit dem Befehl
Set appendonly = no. Weitere Informationen finden Sie unter Beispiel-Cache einrichten. - RAM im Vergleich zu Cores
- Redis ist eine speicherinterne Einzelthreaddatenbank. Im Gegensatz zu anderen persistenten Datenbanken benötigt sie von Natur aus mehr Arbeitsspeicher als CORES. Obwohl es sich um einen Einzelthread handelt, verwendet es 'Multiplexing' zur Verarbeitung der Anforderungen, aber alle Anforderungen werden von einem Thread verarbeitet. Andere Kerne sind jedoch erforderlich, um die Datenbankintegrität und -stabilität für die internen Prozesse zu erhalten. Es wird empfohlen, sich mehr auf RAM und Platte (für IOPS) für Databases for Rediszu konzentrieren. Weitere Informationen finden Sie unter Best Practices für die Kapazitätsplanung für Instanzen.
- Verkleinern des Speichers
- Es wird empfohlen, vorsichtig zu sein, wenn Sie den Speicher Ihrer Databases for Redis-Instanz reduzieren. Da Redis eine speicherinterne Datenbank ist, enthält ihr Speicher Ihre Daten für Speicher-, Verarbeitungs-und Abrufzwecke. Eine drastische Reduzierung des Speichers kann dazu führen, dass die Instanz vorübergehend einen Fehler zurückgibt, da nicht genügend Speicherplatz zum Ausführen der Operationen verfügbar ist. Beispiel: Angenommen, 20 GB Daten versuchen, in 15 GB Speicher zu laden. In diesem Fall wird ein Fehler zurückgegeben.
- Kostenintensive Befehle vermeiden
- Die Ausführung bestimmter Befehle in Redis ist kostenintensiv. Zum Beispiel der Befehl KEYS, der häufig verwendet wird, aber vermieden werden sollte. Verwenden Sie stattdessen den Befehl SCAN, der die Iteration über viele Aufrufe verteilt und den gesamten Server nicht gleichzeitig bindet.
- Bereinigungsrichtlinie auswählen
- Sie sollten eine Bereinigungsrichtlinie auswählen, die für Ihre Anwendung funktioniert. Standardmäßig werden Bereitstellungen mit der Richtlinie
noevictionkonfiguriert. Verwenden Sie Auslagerungsrichtlinien wieallkeys-lru,volatile-lru,allkeys-random,volatile-random,volatile-ttl. Weitere Informationen finden Sie unter Speicherrichtlinien. - maxmemory-Werte festlegen
- Sie können den Wert für
maxmemoryanpassen. Legen Sie jedoch einen angemessenen Grenzwert fest, da Ihre Daten andernfalls den gesamten verfügbaren Speicher belegen können und Ihre Implementierung nicht mehr über genügend Ressourcen verfügen kann. Standardmäßig beträgt der Wert 80% des verfügbaren Speichers des Datenknotens. - TTL-Richtlinien (Time-To-Live) festlegen
- TTL ist eine großartige Funktion, wenn Schlüssel nach einer definierten Zeit aus der Datenbank gelöscht werden. Dies ist sehr hilfreich, wenn Sie Redis als Cache verwenden. Seien Sie jedoch vorsichtig beim Festlegen eines sehr kurzen oder sehr langen Werts, da ein sehr kurzer Wert zu einer Neuberechnung von Werten führen kann und ein sehr langer Wert zu einer unnötigen Speicherbelegung führen kann. Für weitere Informationen siehe TTL-Befehl.
Bewährte Verfahren für hohe Verfügbarkeit
- Wiederholungs-und Verbindungswiederholungslogik
- Systeme sind anfällig für Störungen. Es wird dringend empfohlen, Logik für Wiederholung und Verbindungswiederherstellung in Ihrer Anwendungsarchitektur zu implementieren, um Unterbrechungen zu vermeiden. Verwenden Sie IOREDIS, NODEREDIS oder ein anderes Paket Ihrer Wahl, um die Kontinuität Ihrer Anwendung sicherzustellen.
Weitere Informationen finden Sie im Blogbeitrag Fehlererkennung und -behandlung mit Redis.
Best Practices für die Überwachung
Sie müssen Ihre IBM® Cloud Logs auf die folgenden häufigen Fehler überwachen und Korrekturmaßnahmen ergreifen:
- AOF-Synchronisation
- Schreibgeschützt verfügbar
- Verbindung zum Master unterbrochen
- Hinweise zur Vermeidung von Fehlern finden Sie unter Wie kann ich häufige Fehler bei der Verwendung von Databases for Redis vermeiden?
Allgemeine Best Practices
- Verbindungspooling
- Das Erstellen oder Schließen von Verbindungen ist kostenintensiv. Die effiziente Verwaltung von Verbindungen ist wichtig, und das Verbindungspooling ist hilfreich, um den Aufwand für das Öffnen und Schließen von Verbindungen zu minimieren. Weitere Informationen finden Sie unter "Connection Pooling ".
- Verbindungslimits
- Nutzen Sie Verbindungen effizient. Wenn Sie Databases for Redis mit zu vielen Verbindungen überlasten, kommt es zu Fehlermeldungen und Anwendungsunterbrechungen. Lassen Sie einige Connections verfügbar, da einige von ihnen intern reserviert sind, um den Status und die Integrität Ihrer Datenbank zu erhalten. Es wird empfohlen, Verbindungspooling zu verwenden. Weitere Informationen finden Sie unter Verbindungsbeschränkungen.
- Verbindungszeitlimits
- Die Festlegung geeigneter Zeitlimitwerte für Ihre Verbindungen ist ebenfalls wichtig, damit Ressourcen nicht unbegrenzt gebunden werden. Seien Sie jedoch vorsichtig bei der Festlegung kurzer Zeitlimits, da dies zu einer Verbindungsabwanderung und einer erhöhten Latenzzeit führen kann. Stimmen Sie Zeitlimits auf die operativen Erwartungen Ihrer Anwendung ab.
- Verwenden Sie die Redis-Pipelinefunktion.
- Redis-Pipelining ist ein Verfahren zur Verbesserung der Leistung, indem mehrere Befehle gleichzeitig abgesetzt werden, ohne auf die Antwort auf jeden einzelnen Befehl zu warten. Weitere Informationen finden Sie unter Redis pipelining.
- Redis-Streams-Feature verwenden
- Redis Streams ist ein Datentyp, der eine superschnelle speicherinterne Abstraktion eines reinen Anfügeprotokolls bereitstellt.
- Große Daten aufteilen
- Es wird empfohlen, große Datasets in kleinere Blöcke mit mehr Schlüsseln aufzuteilen, d. h., Ihre Daten auf mehrere Schlüssel aufzuteilen.
- Stapelzeitplan
- Databases for Redis ist für die tägliche Erstellung automatisierter Sicherungen zu einem geplanten Zeitpunkt geplant. Während dieser Zeit werden die E/A-Operationen pro Sekunde (IOPS) Ihrer Datenbanken verwendet. Es wird empfohlen, zu diesem Zeitpunkt keine eigenen Batch-Jobs auszuführen.
- Benachrichtigungskanäle einrichten
- Es wird empfohlen, dass Sie Databases for Redis E-Mail-IDs in IBM-Konten einrichten, um regelmäßige Aktualisierungen zu Versionsänderungen, zum Ende des Lebenszyklus oder zu Wartungsplänen zu erhalten. Sie können auch Ihr IBM Symbol für Kontobenachrichtigung überwachen, um diese Aktualisierungen zu erhalten.
Weitere Informationen finden Sie unter „Best Practices für Redis “ im Blogbeitrag „ IBM Cloud “.