Je souhaite supprimer les clés qui correspondent à "utilisateur *".
comment puis-je faire cela en ligne de commande redis?
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:
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.echo DEL $key
- pour chaque élément, créez une instruction echo pour le supprimer.| 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).
Un autre one-liner compact que j'utilise pour faire ce que vous voulez est:
redis-cli KEYS "user*" | xargs redis-cli DEL
Maintenant, il y a une commande pour supprimer une clé, c'est-à-dire, la touche SUPPR [keys]
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
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) }'
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
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
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: