ホームページ  >  記事  >  データベース  >  Redisでキー値が一括削除される問題を解決する方法

Redisでキー値が一括削除される問題を解決する方法

王林
王林転載
2023-05-31 08:59:001651ブラウズ

発生した問題:

開発プロセス中に、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

OK
127.0.0.1:6379> del hello
(integer) 1

ただし、del は 1 つ以上しか削除できず、一括削除はできません。削除するデータ量が多すぎる場合は適用できません。

2. Redis サーバー全体のデータをクリアします: flashall
3. ライブラリ内の現在のすべてのキーをクリアします:lushdb

以上がRedisでキー値が一括削除される問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。