2017-05-10 4 views
1

J'essaye de supprimer les clés en utilisant le modèle du serveur redis mais il n'est pas supprimé.Supprimer les clés du serveur redis en utilisant redis-cli

clés exemples

1) "flc_77sandeep-pant-back.int.dev.mykronos.com_personality:\xac\xed\x00\x05w\x03\t\xa0\x01" 
2) "flc_77sandeep-pant-back.int.dev.mykronos.com_personality:\xac\xed\x00\x05w\x0e\x03\x01SecondaryKe\xf9:\xac\xed\x00\x05w\x03\t\x98\x02" 
3) "flc_77sandeep-pant-back.int.dev.mykronos.com_personality:\xac\xed\x00\x05w\x03\t\xb8\x02" 
4) "flc_77sandeep-pant-back.int.dev.mykronos.com_personality:\xac\xed\x00\x05w\x0e\x03\x01SecondaryKe\xf9:\xac\xed\x00\x05w\x02\t!" 
5) "flc_1310sandeep-pant-back.int.dev.mykronos.com_personality:\xac\xed\x00\x05w\x0e\x03\x01SecondaryKe\xf9:\xac\xed\x00\x05w\x02\t~" 
6) "flc_1310sandeep-pant-back.int.dev.mykronos.com_personality:\xac\xed\x00\x05w\x0e\x03\x01SecondaryKe\xf9:\xac\xed\x00\x05w\x03\t\xc0\x02" 
7) "flc_-41sandeep-pant-back.int.dev.mykronos.com_personality:\xac\xed\x00\x05w\x03\t\xc5\x01" 
8) "flc_77sandeep-pant-back.int.dev.mykronos.com_personality:\xac\xed\x00\x05w\x0e\x03\x01SecondaryKe\xf9:\xac\xed\x00\x05w\x03\t\x94\x03" 
9) "flc_77sandeep-pant-back.int.dev.mykronos.com_personality:\xac\xed\x00\x05w\x03\t\xd3\x01" 
10) "flc_77sandeep-pant-back.int.dev.mykronos.com_personality:\xac\xed\x00\x05w\x0e\x03\x01SecondaryKe\xf9:\xac\xed\x00\x05w\x03\t\xee\x02" 

Command

 
redis-cli KEYS *sandeep-pant* | xargs redis-cli DEL 

de sortie

xargs: WARNING: a NUL character occurred in the input. It cannot be passed through in the argument list. Did you mean to use the --null option? 
xargs: unmatched double quote; by default quotes are special to xargs unless you use the -0 option 
(integer) 0 
+1

'' * est un caractère de contrôle de bash – h0x91B

Répondre

0

Vous voudrez probablement lire le documentation about DEL - lorsque vous le faites, vous remarquerez qu'il n'accepte pas les modèles de nom de clé (c.-à-d. caractères génériques), mais nécessite les noms de clés exactes pour la suppression.

+0

j'ai essayé de supprimer les clés à l'aide modèle et il fonctionne. [root @ dmc31 ~] # redis-cli SET key1 "Bonjour" OK [root @ dmc31 ~] # redis-cli Touche SET2 "Monde" OK [root @ dmc31 ~] # redis-cli TOUCHES \ * \ * 1) "key2" 2) "key1" [racine @ dmc31 ~] # redis-cli TOUCHES \ * clé \ * | xargs redis-cli DEL (entier) 2 –

2

Code Bash:

for k in $(redis-cli -a password1 keys "*"); do 
    echo "delete key '$k'"; 
    redis-cli -a password1 DEL $k; 
done 

Retirez -a password1 si pas besoin d'un mot de passe

2

Vous ne devriez pas utiliser KEYS car il est une opération de blocage, utilisez SCAN à la place. Si vous utilisez motif glob, entourer de guillemets:

redis-cli --scan --pattern '*sandeep-pant*' | xargs -L 100 redis-cli del

Vous pouvez utiliser le -L 100 pour les lots DEL opérations avec 100 clés à chaque fois.

+1

Oui, celui-ci est beaucoup mieux que le mien. – h0x91B

1

Si vous ne voulez pas écrire script bash utiliser ce one-liner

redis-cli --scan --pattern "*sandeep-pant*" | sed -e 's/^/"/g' -e 's/$/"/g' | xargs -i redis-cli del {} 

Explication:

  1. Obtient la ligne de touches adaptée par la ligne
  2. sed ajoute des citations au début et la fin de chaque touche
  3. xargs supprime les enregistrements un par un.

{} est le marqueur où la clé doit être placé dans le script