94

「user*」に一致するキーを削除したい。

redisコマンドラインでそれを行うにはどうすればよいですか?

4

9 に答える 9

92

私があなたがやりたいことをするために使うもう一つのコンパクトなワンライナーは:

redis-cli KEYS "user*" | xargs redis-cli DEL
于 2012-11-08T15:09:31.553 に答える
59

これは、現時点では一発でできる機能ではありません (DELドキュメントのコメントを参照してください)。残念ながら、 を使用KEYSして結果をループし、 を使用DELしてそれぞれを削除するだけです。

bash を少し使ってみてはどうでしょうか。

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

ステップスルーするには:

  1. echo 'KEYS user*' | redis-cli | awk '{print $1}'-- すべてのキーを取得し、必要のない余分なテキストを awk で取り除きます。
  2. echo DEL $key-- それぞれに対して、echo ステートメントを作成して削除します。
  3. | redis-cli-- DEL ステートメントを取得し、cli に戻します。

これが最善のアプローチであることを示唆しているわけではありません (一部のユーザー名にスペースが含まれていると問題が発生する可能性がありますが、うまくいけば要点が理解できます)。

于 2012-01-10T05:57:17.540 に答える
17

キーを削除するコマンド、つまり DEL キー [keys] があります。

DEL キー...

于 2018-04-23T17:31:12.210 に答える
6

を使用して、コマンドとコマンドへのパイプをawk使用して、redis から一致するすべてのキーを見つけます。redis-cli KEYSredis-cli DEL

redis-cli KEYS "user*"  | awk '{ system("redis-cli DEL " $1) }'
于 2016-03-18T14:04:01.523 に答える
5

Orangeoctopus の回答に加えて、echoand パイプは必要ありません。コマンドを引数として に渡すことができますredis-cli。これは、あなたができることを意味します

for key in `redis-cli "KEYS" "user*" | awk '{print $1}'`
 do redis-cli "DEL" "$key"
done
于 2012-03-16T11:50:59.387 に答える
1

これを使用して、バックスラッシュ、引用符、二重引用符、またはスペースを含む redis キーを削除します。

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

于 2016-11-25T21:17:43.970 に答える
0

oneliner を使用する場合、特定の文字をエスケープする場合に備えてパターンを編集できます。たとえば、'\b test \b' のようなパターンを削除するには:

redis-cli --raw KEYS '\\b*' | sed 's/\\b/\\\\b/g' | xargs redis-cli del
于 2016-09-09T09:47:54.620 に答える