Einführung
Redis ist ein Open-Source, in-memory Key-Value-Datenspeicher. Es verfügt über mehrere Befehle, die bei der Fehlerbehebung und Behebung von Problemen hilfreich sein können. Aufgrund der Natur von Redis als in-memory Key-Value Store konzentrieren sich viele dieser Befehle auf das Speichermanagement, aber es gibt auch andere, die wertvoll sind, um einen Überblick über den Zustand Ihres Redis-Servers zu erhalten. Dieses Tutorial gibt Details darüber, wie einige dieser Befehle verwendet werden können, um Probleme zu diagnostizieren und zu lösen, auf die Sie beim Einsatz von Redis stoßen könnten.
Wie Sie diesen Leitfaden verwenden
Dieser Leitfaden ist als Spickzettel mit eigenständigen Beispielen verfasst. Wir ermutigen Sie, zu dem Abschnitt zu springen, der für die Aufgabe relevant ist, die Sie abschließen möchten.
Die in diesem Leitfaden gezeigten Befehle wurden auf einem Ubuntu 22.04 Server getestet, auf dem Redis Version 6.0.16 läuft. Um eine ähnliche Umgebung einzurichten, können Sie Schritt 1 unseres Leitfadens zu Installation und Absicherung von Redis unter Ubuntu 22.04 folgen. Wir werden zeigen, wie sich diese Befehle verhalten, indem wir sie mit redis-cli
ausführen, der Befehlszeilenschnittstelle von Redis. Wenn Sie eine andere Redis-Schnittstelle verwenden, wie zum Beispiel Redli, kann die genaue Ausgabe bestimmter Befehle unterschiedlich sein.
Alternativ könnten Sie eine verwaltete Redis-Datenbankinstanz bereitstellen, um diese Befehle zu testen. Je nachdem, welches Maß an Kontrolle Ihr Datenbankanbieter zulässt, könnten einige Befehle in dieser Anleitung möglicherweise nicht wie beschrieben funktionieren. Um eine DigitalOcean Managed Database bereitzustellen, folgen Sie unserer Produktdokumentation zu den Managed Databases. Anschließend müssen Sie entweder Redli installieren oder einen TLS-Tunnel einrichten, um eine Verbindung zur verwalteten Datenbank über TLS herzustellen.
Beheben von Speicherproblemen
memory usage
zeigt Ihnen, wie viel Speicherplatz derzeit von einem einzelnen Schlüssel verwendet wird. Es nimmt den Namen eines Schlüssels als Argument und gibt die Anzahl der Bytes aus, die er verwendet. Zuerst setzen Sie eine Beispielvariable:
- set key_meaningOfLife "Food"
Als nächstes überprüfen Sie den Speicher mit memory usage
:
- memory usage key_meaningOfLife
Output(integer) 88
Für ein allgemeineres Verständnis, wie Ihr Redis-Server Speicher verwendet, können Sie den Befehl memory stats
ausführen:
- memory stats
Dieser Befehl gibt ein Array von speicherbezogenen Metriken und ihren Werten aus. Die folgenden Metriken werden von memory stats
gemeldet:
peak.allocated
: Die Spitzenanzahl der von Redis verbrauchten Bytes-
total.allocated
: Die Gesamtanzahl der von Redis allokierten Bytes -
startup.allocated
: Die anfängliche Anzahl der bei der Redis-Startzeit verbrauchten Bytes -
replication.backlog
: Die Größe des Replikationsrückstands in Bytes -
clients.slaves
: Die Gesamtgröße aller Replikantenüberlastungen, d. h. Ausgabe- und Abfragepuffer und Verbindungskontexte
-
clients.normal
: Die Gesamtgröße aller Client-Überlastungen -
aof.buffer
: Die Gesamtgröße der aktuellen und neu schreibenden Puffer der Nur-Anhängen-Datei
-
db.0
: Die Überlastungen der Haupt- und Verfallsdictionaries für jede auf dem Server verwendete Datenbank, angegeben in Bytes -
overhead.total
: Die Summe aller Overheads, die zur Verwaltung des Schlüsselraums von Redis verwendet werden -
keys.count
: Die Gesamtanzahl der in allen Datenbanken auf dem Server gespeicherten Schlüssel -
keys.bytes-per-key
: Das Verhältnis zwischen dem Nettospeicherverbrauch des Servers undkeys.count
-
dataset.bytes
: Die Größe des Datensatzes in Bytes -
dataset.percentage
: Der Prozentsatz des Nettospeicherverbrauchs von Redis, der vondataset.bytes
eingenommen wird -
peak.percentage
: Der Prozentsatz vonpeak.allocated
austotal.allocated
fragmentation
: Das Verhältnis der aktuell verwendeten Menge an Speicher geteilt durch den physischen Speicher, den Redis tatsächlich verwendet
memory malloc-stats
liefert einen internen Statistikbericht von jemalloc, dem Speicherallokator, den Redis auf Linux-Systemen verwendet:
- memory malloc-stats
Wenn es so aussieht, als würden Sie auf speicherbezogene Probleme stoßen, aber das Parsen der Ausgabe der vorherigen Befehle keine Hilfe bietet, können Sie versuchen, memory doctor
auszuführen:
- memory doctor
Diese Funktion gibt etwaige Speicherverbrauchsprobleme aus und schlägt mögliche Lösungen vor.
Allgemeine Informationen zu Ihrer Redis-Instanz erhalten
A debugging command that isn’t directly related to memory management is monitor
. This command allows you to review a constant stream of every command processed by the Redis server:
- monitor
OutputOK
1566157213.896437 [0 127.0.0.1:47740] "auth" "foobared"
1566157215.870306 [0 127.0.0.1:47740] "set" "key_1" "878"
Ein weiterer nützlicher Befehl für die Fehlersuche ist info
, der mehrere Blöcke von Informationen und Statistiken über den Server zurückgibt:
- info
Output# Server
redis_version:6.0.16
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:a3fdef44459b3ad6
redis_mode:standalone
os:Linux 5.15.0-41-generic x86_64
. . .
Dieser Befehl gibt viele Informationen zurück. Wenn Sie nur einen Info-Block zurückgeben möchten, können Sie ihn als Argument für info
angeben:
- info CPU
Output# CPU
used_cpu_sys:173.16
used_cpu_user:70.89
used_cpu_sys_children:0.01
used_cpu_user_children:0.04
Beachten Sie, dass die Informationen, die vom info
-Befehl zurückgegeben werden, von der verwendeten Redis-Version abhängen können.
Verwendung des keys
-Befehls
Der keys
-Befehl ist nützlich, wenn Sie den Namen eines Schlüssels vergessen haben oder vielleicht einen erstellt haben, aber versehentlich falsch geschrieben haben. keys
sucht nach Schlüsseln, die zu einem Muster passen:
- keys pattern
Die folgenden Glob-Stil-Variablen werden unterstützt:
?
ist ein Platzhalter für ein einzelnes Zeichen, sodasss?mmy
zusammy
,sommy
undsqmmy
passt.*
ist ein Platzhalter, der für eine beliebige Anzahl von Zeichen steht, einschließlich kein Zeichen, sodasssa*y
zusammy
,say
,sammmmmmy
undsalmony
passt.- Sie können zwei oder mehr Zeichen angeben, die das Muster enthalten können, indem Sie sie in Klammern einschließen. So passt
s[ai]mmy
zusammy
undsimmy
, aber nicht zusummy
. - Um einen Platzhalter einzustellen, der ein oder mehrere Buchstaben ignoriert, schließen Sie sie in Klammern ein und setzen ihnen ein Zirkumflexzeichen (
^
) voran. So passts[^oi]mmy
zusammy
undsxmmy
, aber nicht zusommy
odersimmy
. - Um einen Platzhalter einzustellen, der einen Bereich von Buchstaben einschließt, trennen Sie den Anfang und das Ende des Bereichs mit einem Bindestrich und schließen ihn in Klammern ein. So passt
s[a-o]mmy
zusammy
,skmmy
undsommy
, aber nicht zusrmmy
.
Warnung: Die Redis-Dokumentation warnt davor, dass keys
in einer Produktionsumgebung fast nie verwendet werden sollte, da dies erhebliche negative Auswirkungen auf die Leistung haben kann.
Schlussfolgerung
Dieser Leitfaden enthält eine Reihe von Befehlen, die hilfreich sind, um Probleme zu beheben und Herausforderungen zu lösen, die bei der Arbeit mit Redis auftreten können. Wenn es andere verwandte Befehle, Argumente oder Verfahren gibt, über die Sie in diesem Leitfaden mehr erfahren möchten, fragen Sie bitte oder machen Sie Vorschläge in den Kommentaren.
Weitere Informationen zu Redis-Befehlen finden Sie in unserer Tutorialserie zum Thema Verwaltung einer Redis-Datenbank.
Source:
https://www.digitalocean.com/community/cheatsheets/how-to-troubleshoot-issues-in-redis