103 votes

Obtenir les clés et les valeurs de Redis à l'invite de commande

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 * ?

237voto

seppo0010 Points 3758

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 :

  • pour "string" : get <key>
  • pour "hash" : hgetall <key>
  • pour "liste" : lrange <key> 0 -1
  • pour "set" : smembers <key>
  • pour "zset" : 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.

https://redis.io/commands/keys

19voto

Clemens Points 73

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

0 votes

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

5voto

Pe Dro Points 379

Avec redis >= 5.x un nouveau type de données stream a été introduit. Ainsi, le

> type <key>

devrait vous donner stream . Pour obtenir ses valeurs :

> XRANGE <key> - +

Prograide.com

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.

Powered by:

X