2017-05-10 22 views
1

redisサーバからKEYSを使用してパターンを削除しようとしていますが、削除されません。redis-cliを使用してredisサーバからキーを削除

サンプルキー

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" 

コマンド

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

出力

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

に置かれるべきであるマーカーである*' Iパターンを使用してキーを削除し、それが動作している試みbashの制御文字 – h0x91B

答えて

0

おそらくを読みたいと思います- そうすると、キー名パターンを受け入れないことに気づくでしょう。ワイルドカード)、削除には正確なキー名が必要です。

+0

あります。 [root @ dmc31〜]#redis-cli SETキー1 "Hello" [root @ dmc31〜]#redis-cli SETキー2 " \ * 1) "key2" 2) "key1" [root @ dmc31〜]#redis-cli KEYS \ *キー\ * | xargs redis-cli DEL (整数)2 –

2

バッシュコード:

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

それがブロック操作であるとして、あなたが代わりにSCANを使用し、KEYSを使うべきではありませんパスワード

2

を必要としない場合-a password1を削除します。あなたはグロブパターンを使用する場合は 、引用符で囲み:

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

あなたは100のキーたびにバッチにDEL OPSを-L 100を使用することができます。

+1

ええ、これははるかに良い私の鉱山。 – h0x91B

1

あなたはこのワンライナー

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

説明bashスクリプトの使用を記述したくない場合は、次の

  1. はsedのライン
  2. にマッチしたキーラインが先頭に引用符を追加して取得します。各キーの末尾には、それぞれのレコードが削除されます。
  3. xargsはレコードを1つずつ削除します。

{} `キースクリプト

関連する問題