Antworten:
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.
KEYS
der Server möglicherweise länger blockiert wird, wenn ein großer Datensatz abgefragt wird
Aktualisiert 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 Risiko KEYS
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:
$ redis-cli --scan --pattern '*'
Es kann vorkommen, dass Sie mit redis-cli eine Verbindung zu Ihrem Remote-Redis-Server herstellen und dann den folgenden Befehl ausführen:
KEYS *
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.
SELECT 1
KEYS *
Ich poste diese Informationen, weil keine der vorherigen Antworten mein Problem gelöst hat.
-> Holen Sie sich alle Schlüssel von redis-cli
-redis 127.0.0.1:6379> keys *
-> Liste der Muster abrufen
-redis 127.0.0.1:6379> keys d??
Dadurch werden Schlüssel erzeugt, die mit 'd' mit drei Zeichen beginnen.
-redis 127.0.0.1:6379> keys *t*
Dadurch werden Schlüssel mit übereinstimmenden 't'-Zeichen im Schlüssel erhalten
-> Schlüssel von der Kommandozeile bis zählen
-redis-cli keys * |wc -l
-> Oder du kannst verwenden dbsize
-redis-cli dbsize
key *t*
zu keys *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
KEYS "prefix:*"
Ja, Sie können alle Schlüssel damit erhalten
var redis = require('redis');
redisClient = redis.createClient(redis.port, redis.host);
redisClient.keys('*example*', function (err, keys) {
})
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:
import redis
r = redis.StrictRedis(host='localhost', port=6379, db=0)
for key in r.scan_iter("key_pattern*"):
print key
redis-cli -h <host> -p <port> keys *
Dabei ist * das Muster zum Auflisten aller Schlüssel
redis-cli -h <host> -p <port> keys '*'
Schlüsselmuster
Verfügbar seit 1.0.0.
Zeitliche Komplexitä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.
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:
redis> MSET firstname Jack lastname Stuntman age 35
"OK"
redis> KEYS *name*
1) "lastname"
2) "firstname"
redis> KEYS a??
1) "age"
redis> KEYS *
1) "lastname"
2) "age"
3) "firstname"
Wenn Ihr Redis ein Cluster ist, können Sie dieses Skript verwenden
#!/usr/bin/env bash
redis_list=("172.23.3.19:7001,172.23.3.19:7002,172.23.3.19:7003,172.23.3.19:7004,172.23.3.19:7005,172.23.3.19:7006")
arr=($(echo "$redis_list" | tr ',' '\n'))
for info in ${arr[@]}; do
echo "start :${info}"
redis_info=($(echo "$info" | tr ':' '\n'))
ip=${redis_info[0]}
port=${redis_info[1]}
echo "ip="${ip}",port="${port}
redis-cli -c -h $ip -p $port set laker$port '湖人总冠军'
redis-cli -c -h $ip -p $port keys \*
done
echo "end"
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 Link
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
Wenn Sie Laravel Framework verwenden, können Sie dies einfach verwenden:
$allKeyList = Redis::KEYS("*");
print_r($allKeyList);
In Core PHP:
$redis = new Redis();
$redis->connect('hostname', 6379);
$allKeyList = $redis->keys('*');
print_r($allKeyList);
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.
redis-cli keys "*"