En redis, comment supprimer les clés?

Je veux supprimer les clés qui correspondent à “utilisateur *”.

comment puis-je faire cela dans la ligne de commande redis?

Ce n’est pas une fonctionnalité en ce moment pour pouvoir faire en une seule fois (voir les commentaires dans la documentation de DEL ). Malheureusement, il ne vous rest plus qu’à utiliser KEYS , à parcourir les résultats, puis à utiliser DEL pour les supprimer.

Que diriez-vous d’utiliser bash un peu 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}' echo 'KEYS user*' | redis-cli | awk '{print $1}' – Obtenez toutes les clés et supprimez le texte supplémentaire que vous ne voulez pas utiliser avec awk.
  2. echo DEL $key – pour chacun, créez une déclaration echo pour la supprimer.
  3. | redis-cli | redis-cli – prenez les instructions DEL et remettez-les dans le cli.

Ne pas suggérer que ceci 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 aurez compris le point).

Un autre monotone compact que j’utilise pour faire ce que vous voulez est:

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

Suite à la réponse d’Orangeoctopus, vous n’avez pas besoin de l’ echo et du tube, vous pouvez passer des commandes comme 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 

Maintenant, il y a une commande pour supprimer une clé, c.-à-d., Touche DEL [touches]

Touche DEL …

À l’aide de awk , recherchez toutes les clés correspondantes dans redis à l’aide de la commande redis-cli KEYS et de la commande pipe to redis-cli DEL .

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

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

Je viens de publier un utilitaire d’interface de ligne de commande pour npm et github qui vous permet de supprimer des clés correspondant à un modèle donné (même ou à la demande de l’utilisateur ) d’une firebase database Redis.

Vous pouvez trouver l’utilitaire ici:

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

Lorsque vous utilisez le oneliner, vous pouvez modifier le motif au cas où il échapperait des caractères spécifiques. Par exemple, pour supprimer des patterns comme ‘\ b test \ b’, utilisez:

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

Utilisez cette option pour supprimer les clés redis ayant 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