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 *
?
Antworten:
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.
Kurze Antwort :
for i in $(redis-cli KEYS '*'); do echo $i; redis-cli GET $i; done
Lange Antwort :
So erhalten Sie alle Schlüssel:
redis-cli KEYS '*'
um den Wert für einen Schlüssel zu erhalten:
redis-cli GET <your-key>
und wenn Sie alle Werte wollen:
for i in $(redis-cli KEYS '*'); do redis-cli GET $i; done
und schließlich alle Schlüssel und Werte:
for i in $(redis-cli KEYS '*'); do echo $i; redis-cli GET $i; done