web-dev-qa-db-fra.com

Dans Redis, comment puis-je enlever les clés?

Je souhaite supprimer les clés qui correspondent à "utilisateur *".

comment puis-je faire cela en ligne de commande redis?

52
TIMEX

Ce n'est pas une fonctionnalité pour le moment que vous pouvez faire en un seul coup (voir les commentaires dans la documentation DEL ). Malheureusement, il ne vous reste plus qu’à utiliser KEYS, à parcourir en boucle les résultats, puis à utiliser DEL pour les supprimer.

Pourquoi ne pas utiliser un peu bash pour aider?

for key in `echo 'KEYS user*' | redis-cli | awk '{print $1}'`
 do echo DEL $key
done | redis-cli

Pour le parcourir:

  1. echo 'KEYS user*' | redis-cli | awk '{print $1}' - récupérez toutes les clés et supprimez le texte supplémentaire que vous ne voulez pas avec awk.
  2. echo DEL $key - pour chaque élément, créez une instruction echo pour le supprimer.
  3. | redis-cli - prenez les instructions DEL et renvoyez-les dans la cli.

Ne pas suggérer que c'est la meilleure approche (vous pourriez avoir des problèmes si certains de vos noms d'utilisateur ont des espaces, mais j'espère que vous comprenez le point).

39
Donald Miner

Un autre one-liner compact que j'utilise pour faire ce que vous voulez est:

redis-cli KEYS "user*" | xargs redis-cli DEL
49
user1151446

Maintenant, il y a une commande pour supprimer une clé, c'est-à-dire, la touche SUPPR [keys]

Touche DEL ...

4
Narendra Chamoli

En plus de la réponse d’orangeoctopus, vous n’avez pas besoin de echo et de pipe, vous pouvez passer des commandes en tant qu’arguments dans redis-cli. Cela signifie que vous pouvez faire

for key in `redis-cli "KEYS" "user*" | awk '{print $1}'`
 do redis-cli "DEL" "$key"
done
2
neilkimmett

En utilisant awk, trouvez toutes les clés correspondantes dans redis en utilisant la commande redis-cli KEYS et dirigez-les vers la commande redis-cli DEL.

redis-cli KEYS "user*"  | awk '{ system("redis-cli DEL " $1) }'
1
jeetu

Lorsque vous utilisez l’uneliner, vous pouvez modifier le motif s’il échappe à des caractères spécifiques. Par exemple, pour supprimer des motifs tels que '\ b test\b', utilisez:

redis-cli --raw KEYS '\\b*' | sed 's/\\b/\\\\b/g' | xargs redis-cli del
0
Private

Utilisez cette option pour supprimer les clés redis comportant des barres obliques inverses, des guillemets, des guillemets doubles ou des espaces:

redis-cli KEYS "user*" | sed 's/\\/\\\\/g' | sed 's/"/\\"/g' | sed "s/'/\\\\'/g" | sed 's/ /\\ /g' | xargs redis-cli DEL

0
make

Je sais que c'est vieux, mais pour ceux d'entre vous qui viennent ici de Google:

Je viens de publier un utilitaire d'interface de ligne de commande pour npm et github qui vous permet de supprimer les clés correspondant à un modèle donné (même , ou comme vous l'avez demandé à l'utilisateur) d'une base de données Redis.

Vous pouvez trouver l'utilitaire ici:

https://www.npmjs.com/package/redis-utils-cli

0
Gabriel McAdams