Gibt es einen Redis-Befehl zum Abrufen aller Schlüssel in der Datenbank? Ich habe einige Python-Redis-Bibliotheken gesehen, die sie abgerufen haben. Aber ich habe mich gefragt, ob es von Redis-Client möglich ist.
quelle
Gibt es einen Redis-Befehl zum Abrufen aller Schlüssel in der Datenbank? Ich habe einige Python-Redis-Bibliotheken gesehen, die sie abgerufen haben. Aber ich habe mich gefragt, ob es von Redis-Client möglich ist.
Versuchen Sie, den KEYS
Befehl zu betrachten. KEYS *
listet alle in redis gespeicherten Schlüssel auf.
BEARBEITEN: Bitte beachten Sie die Warnung oben auf der KEYS
Dokumentationsseite:
Zeitkomplexität: O (N), wobei N die Anzahl der Schlüssel in der Datenbank ist, unter der Annahme, dass die Schlüsselnamen in der Datenbank und das angegebene Muster eine begrenzte Länge haben.
UPDATE (V2.8 oder höher): SCAN
ist eine überlegene Alternative zu KEYS
, da es weder den Server blockiert noch erhebliche Ressourcen verbraucht. Verwenden Sie es lieber.
redis-cli keys "*"
KEYS
der Server möglicherweise länger blockiert wird, wenn ein großer Datensatz abgefragt wirdAktualisiert für Redis 2.8 und höher
Wie in den Kommentaren früherer Antworten auf diese Frage erwähnt,
KEYS
handelt es sich um einen potenziell gefährlichen Befehl, da Ihr Redis-Server nicht für andere Vorgänge verfügbar ist, während er ihn bedient. Ein weiteres RisikoKEYS
besteht darin, dass es (abhängig von der Größe Ihres Schlüsselbereichs) viel RAM verbrauchen kann, um den Antwortpuffer vorzubereiten, wodurch möglicherweise der Speicher Ihres Servers erschöpft wird.Version 2.8 von Redis hatte den SCAN eingeführt , die viel höflicher ist und für denselben Zweck verwendet werden kann.
Die CLI bietet auch eine gute Möglichkeit, damit zu arbeiten:
quelle
Es kann vorkommen, dass Sie mit redis-cli eine Verbindung zu Ihrem Remote-Redis-Server herstellen und dann den folgenden Befehl ausführen:
zeigt nichts oder besser, es zeigt:
(empty list or set)
Wenn Sie absolut sicher sind, dass der von Ihnen verwendete Redis-Server derjenige ist, über den Sie die Daten verfügen, stellt Ihre redis-cli möglicherweise keine Verbindung zur richtigen Redis-Datenbankinstanz her.
Wie in den Redis-Dokumenten erwähnt, werden neue Verbindungen standardmäßig mit der Datenbank 0 verbunden .
In meinem Fall hat der
KEYS
Befehl keine Ergebnisse abgerufen, da meine Datenbank 1 war. Um die gewünschte Datenbank auszuwählen, verwenden Sie SELECT .Die Datenbank wird durch eine Ganzzahl identifiziert.
Ich poste diese Informationen, weil keine der vorherigen Antworten mein Problem gelöst hat.
quelle
-> Holen Sie sich alle Schlüssel von redis-cli
-> Liste der Muster abrufen
Dadurch werden Schlüssel erzeugt, die mit 'd' mit drei Zeichen beginnen.
Dadurch werden Schlüssel mit übereinstimmenden 't'-Zeichen im Schlüssel erhalten
-> Schlüssel von der Kommandozeile bis zählen
-> Oder du kannst verwenden
dbsize
quelle
key *t*
zukeys *t*
.Schauen Sie sich das folgende Redis Cheat Sheet an . Um eine Teilmenge der Redis-Schlüssel mit dem Redis-Cli zu erhalten, benutze ich den Befehl
quelle
Ja, Sie können alle Schlüssel damit erhalten
quelle
SCAN erfordert nicht, dass der Client alle Schlüssel wie KEYS in den Speicher lädt. SCAN bietet Ihnen einen Iterator, den Sie verwenden können. Ich hatte 1B-Datensätze in meinem Redis und konnte nie genug Speicher bekommen, um alle Schlüssel auf einmal zurückzugeben.
Hier ist ein Python-Snippet, mit dem Sie alle Schlüssel aus dem Store abrufen können, die einem Muster entsprechen, und sie löschen können:
quelle
Dabei ist * das Muster zum Auflisten aller Schlüssel
quelle
redis-cli -h <host> -p <port> keys '*'
Schlüsselmuster
Gibt alle Schlüssel zurück, die dem Muster entsprechen.
Warnung: Die Verwendung dieses Befehls wird nicht empfohlen, da er die Leistung beeinträchtigen kann, wenn er für große Datenbanken anstelle von KEYS ausgeführt wird. Sie können SCAN oder SETS verwenden .
Beispiel für den zu verwendenden Befehl KEYS:
quelle
Wenn Ihr Redis ein Cluster ist, können Sie dieses Skript verwenden
quelle
Holen Sie sich alle Schlüssel in Redis
Holen Sie sich alle Schlüssel mit der Option --scan:
Listen Sie alle Schlüssel mit dem Befehl KEYS auf:
quelle
Um alle auf dem Redis-Server verfügbaren Schlüssel zu erhalten, sollten Sie redis-cli öffnen und Folgendes eingeben:
KEYS *
Um weitere Hilfe zu erhalten, besuchen Sie bitte diese Seite: Dieser Linkquelle
Wir sollten --scan --pattern mit redis 2.8 und höher verwenden.
Sie können versuchen, diesen Wrapper über redis-cli zu verwenden. https://github.com/VijayantSoni/redis-helper
quelle
Wenn Sie Laravel Framework verwenden, können Sie dies einfach verwenden:
In Core PHP:
quelle
Sie können einfach mit redis-cli eine Verbindung zu Ihrem Redis-Server herstellen, Ihre Datenbank auswählen und KEYS * eingeben. Bitte denken Sie daran, dass Sie alle in der ausgewählten Redis-Datenbank vorhandenen Schlüssel erhalten.
quelle