Ich habe sehr kleine Daten in Redis gespeichert und das Folgende funktioniert wie erwartet, sodass ich alle Schlüssel herunterladen kann.
redis-cli keys *
Gibt es eine Möglichkeit, das zu bekommen keys+values *
?
Dafür gibt es keinen Befehl, aber Sie können dazu ein Skript schreiben.
Sie müssen für jede Taste einen "Typ" -Befehl ausführen:
> type <key>
und je nach Antwort durchführen:
get <key>
hgetall <key>
lrange <key> 0 -1
smembers <key>
zrange <key> 0 -1 withscores
Denken Sie daran, dass Sie für Hashes und sortierte Sets die Schlüssel / Scores und Werte erhalten.
Eine mögliche sh
Implementierung:
#!/bin/sh -eu
keys=`redis-cli keys '*'`
if [ "$keys" ]; then
echo "$keys" | while IFS= read -r key; do
type=`echo | redis-cli type "$key"`
case "$type" in
string) value=`echo | redis-cli get "$key"`;;
hash) value=`echo | redis-cli hgetall "$key"`;;
set) value=`echo | redis-cli smembers "$key"`;;
list) value=`echo | redis-cli lrange "$key" 0 -1`;;
zset) value=`echo | redis-cli zrange "$key" 0 -1 withscores`;;
esac
echo "> $key ($type):"
echo "$value" | sed -E 's/^/ /'
done
fi
Aber beachten Sie:
Warnung:
KEYS
Als Befehl betrachten, der nur in Produktionsumgebungen mit äußerster Sorgfalt verwendet werden sollte. Dies kann die Leistung beeinträchtigen, wenn es für große Datenbanken ausgeführt wird. Dieser Befehl dient zum Debuggen und für spezielle Vorgänge, z. B. zum Ändern des Keyspace-Layouts.
Mit
redis >= 5.x
wurde ein neuer Datentypstream
eingeführt. Also, diesollte dir geben
stream
. Um seine Werte zu erhalten:quelle
Kurze Antwort :
Lange Antwort :
So erhalten Sie alle Schlüssel:
um den Wert für einen Schlüssel zu erhalten:
und wenn Sie alle Werte wollen:
und schließlich alle Schlüssel und Werte:
quelle