J'ai une très petite donnée sauvegardée dans Redis et ce qui suit fonctionne comme prévu et me permet de télécharger toutes les clés.
redis-cli keys *
Y a-t-il un moyen d'obtenir le keys+values *
?
J'ai une très petite donnée sauvegardée dans Redis et ce qui suit fonctionne comme prévu et me permet de télécharger toutes les clés.
redis-cli keys *
Y a-t-il un moyen d'obtenir le keys+values *
?
Il n'y a pas de commande pour cela, mais vous pouvez écrire un script pour le faire.
Vous devrez effectuer pour chaque touche une commande "type" :
> type <key>
et selon la réponse obtenue :
get <key>
hgetall <key>
lrange <key> 0 -1
smembers <key>
zrange <key> 0 -1 withscores
N'oubliez pas que pour les hachages et les ensembles triés, vous obtiendrez les clés/scores et les valeurs.
Un possible sh
mise en œuvre :
#!/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
Mais notez bien :
Avertissement : tenez compte
KEYS
comme une commande qui ne doit être utilisée dans les environnements de production qu'avec une extrême prudence. Elle peut ruiner les performances lorsqu'elle est exécutée contre de grandes bases de données. Cette commande est destinée au débogage et aux opérations spéciales, telles que la modification de la disposition des espaces-clés.
Réponse courte :
for i in $(redis-cli KEYS '*'); do echo $i; redis-cli GET $i; done
Réponse longue :
Pour obtenir toutes les clés :
redis-cli KEYS '*'
pour obtenir la valeur d'une clé :
redis-cli GET <your-key>
et si vous voulez toutes les valeurs :
for i in $(redis-cli KEYS '*'); do redis-cli GET $i; done
et enfin toutes les clés et valeurs :
for i in $(redis-cli KEYS '*'); do echo $i; redis-cli GET $i; done
Je sais que la question concerne l'"invite de commande", mais cette interface graphique Redis pourrait être utile aux personnes qui se retrouvent ici : redislabs.com/redis-enterprise/redis-insight
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.