開発プロセス中に、login_logID (ID は変数) など、特定のルールに従ってバッチで削除する必要があるキーに遭遇することがあります。 「login_log*」タイプのデータですが、redis自体にはクラスのキー値をバッチでクエリするコマンドキーしかなく、特定のクラスをバッチで削除するコマンドはありません。
最初にクエリを実行してから削除し、xargs を使用してパラメータを渡し (xargs はパイプまたは標準入力 (stdin) データをコマンド ライン パラメータに変換できます)、最初にクエリ ステートメントを実行します。次に、クエリされたキー値と元の del パラメータを削除します。
redis-cli KEYS key* (查找条件) | xargs redis-cli del
=>[実行後に返される結果の数が影響する]: (整数) 10[数量 10]
実験を行い、最初に同じタイプの 3 つのキー値を作成します
127.0.0.1:6379> set test1 1
OK
127.0.0.1:6379> set test2 2
OK
127.0.0.1:6379> set test3 3
OK
クエリ キー
127.0.0.1:6379> キー テスト*
1) "test3"
2) "test2"
3 ) " test1"
redis を終了し、削除コマンドをローカルで実行します
[root@localhost redis]# redis-cli -a 密码 -n 0(数据库) keys "test*" |xargs redis-cli -a 密码 -n 0(数据库) del Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. (integer) 3 (返回行数)
原理分析:
このコマンドは、最初に Redis クライアントを通じてkeys コマンドを実行し、あいまい検索を行います。 xargs コマンドを使用して、以前にクエリしたキーを後続の redis del コマンドの入力として使用します。
これは、redis-cli del test1 test2 test3
を実行するのと同じです。注: redis 条件は次のとおりです。ここで実行するときにもたらされます。 -a はパスワードを入力し、 -n はデータベースを指定します。redis がローカルでない場合、またはその他の変更がある場合は、 -h redis サーバー ip、-p port ## を追加する必要があります。 #例
redis-cli -h 127.0.0.1 (IP アドレス) -p 6379 (ポート番号) -a パスワード -n 1 (データベースにデータを書き込みます) KEYS キー* (検索条件) | xargs redis-cli ( -h (IP アドレス) -p 6379 (ポート番号) -a パスワード -n 1) del補足:redis での削除
1.Redis DEL このコマンドは既存のキーを削除するために使用されます。存在しないキーは無視されます。
例:
127.0.0.1:6379> set hello worldただし、del は 1 つ以上しか削除できず、一括削除はできません。削除するデータ量が多すぎる場合は適用できません。OK
127.0.0.1:6379> del hello
(integer) 1
2. Redis サーバー全体のデータをクリアします: flashall
3. ライブラリ内の現在のすべてのキーをクリアします:lushdb
以上がRedisでキー値が一括削除される問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。