2012-01-10 27 views

答えて

33

これは今すぐショットで行うことができる機能ではありません(DEL documentationのコメントを参照)。残念ながら、KEYSを使用して結果をループし、DELを使用してそれぞれを削除するだけです。

bashを使って助けてください。 - すべてのキーを取得し、あなたがawkをしたくない余分なテキストを取り除く

  1. echo 'KEYS user*' | redis-cli | awk '{print $1}':それを介してのステップに

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

  2. echo DEL $key - それぞれに対して、それを削除するecho文を作成します。
  3. | redis-cli - DELステートメントを受け取り、それらをcliに戻します。

あなたのユーザー名の一部にスペースが含まれている場合は、問題が発生する可能性がありますが、その点が分かるとうまくいきます。

2

さらに、orangeoctopusの答えにはechoとパイプは必要ありません。コマンドを引数としてredis-cliに渡すことができます。これは、あなたが

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

を行うことができ、私はあなたが欲しいものを行うために使用別のコンパクトなワンライナーがあることを意味:

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

これはすばらしいです、ありがとう。 Redisはこの機能をネイティブに持っていないのは残念です。 – snapfractalpop

+3

マルチデータベース(キースペース)をお持ちの場合はこれがトリックです:db3のキーを削除する必要があるとしましょう: 'redis-cli -n 3 KEYS '接頭辞:*" | xargs redis-cli -n 3 DEL' – Christoffer

+0

削除コマンドを実行する前にAUTH(ログイン)を提供する必要がある場合は、1つのライナーがありますか? – thames

0

私はこれが古いですけど、ここに来てあなたのそれらのためにGoogleに形成:

私はちょうどあなたがRedisのデータベースから指定されたパターンを(さえ、またはユーザーを尋ねなど)と一致するキーを削除することができますNPMとgithubのにコマンドラインインタフェースユーティリティを発表しました。

現在地ユーティリティを見つけることができます。

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

1

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

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

オンライナーを使用すると、特定の文字をエスケープする場合にパターンを編集できます。たとえば、 '\ Bテストの\ b' が使用のようなパターンを削除するには:

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

使用このバックスラッシュ、引用符、二重引用符やスペースを持つのRedisキー削除するには:Redisの中であなたを

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

関連する問題