redis はバッチ削除を実装します:
1. Redis ルート ディレクトリ cd /usr/local/redis-2.8.19
2. ログにアクセスします。 in to redis : redis-cli -h 127.0.0.1 -p 6379 (127.0.0.1 はサーバーの IP アドレスとして記述でき、6379 はポート番号です)
3. すべてのキー値を表示します。 :keys *
4. 指定したインデックスの値を削除します: del key
5. Redis サーバー全体のデータをクリアします: flashall
6. すべてのキーをクリアします現在のライブラリ内:flushdb
[最初の方法]:
以下は、「key_」で始まるすべての Redis データの一括削除です (その数は 100
redis-cli -h (IP地址) -p 6379 (端口号:6379) KEYS key_* | xargs redis-cli (-h (IP地址) -p 6379 (端口号:6379)) del =>[执行后返回的结果影响数量]:(integer) 100[数量100个]#) ##[上記のコマンドにおける DEL 関数の具体的な使用法]:DEL key [key ...]指定された 1 つ以上のキーを削除します。 存在しないキーは無視されます。 時間計算量: O(N)、N は削除されたキーの数です。 単一の文字列型キーを削除します。時間計算量は O(1) です。 単一のリスト、セット、順序付きセット、またはハッシュ テーブル タイプのキーを削除します。時間計算量は O(M) です。M は上記のデータ構造内の要素の数です。 戻り値: 削除されたキーの数。 [例]:
# 删除单个 key redis> SET name huangz OK redis> DEL name (integer) 1 # 删除一个不存在的 key redis> EXISTS phone (integer) 0 redis> DEL phone # 失败,没有 key 被删除 (integer) 0 # 同时删除多个 key redis> SET name "redis" OK redis> SET type "key-value store" OK redis> SET website "redis.com" OK redis> DEL name type website (integer) 3[2 つ目の方法]: 1 つ目の方法のデメリット: 毎回接続を確立する必要がありますが、その点は問題ありません。量が多ければ良いのですが、量が多いと効率が悪くなります。 組み込みの Lua インタープリターを介して、EVAL コマンドを使用して Lua スクリプトを処理できます:
redis-cli -h(IP地址) -p 6379(端口号:6379) --EVAL "return redis.call('del', unpack(redis.call('keys', ARGV[1])))" 0 'Volume:*'[注]: ただし、この処理方法では、次の場合に lua 関数の解凍で問題が発生します。ボリュームが大きい場合、エラーが報告されます
''' (error) ERR Error running script (call to f_e177a091510d969af3b388ee986dbe6658df6b57): @user_script:1: user_script:1: too many results to unpack '''[2 番目の方法の最適化後]: [注]: まず、すべてのパターン マッチング キーを格納する配列キーを定義します。 「ボリューム:」キーで終わり、次に for ループで毎回 5000 個のキーを処理します。つまり、毎回 5000 個のキーを削除します。
redis-cli -h(IP地址) -p 6379(端口号:6379) --EVAL "local keys = redis.call('keys', ARGV[1]) for i=1,#keys,5000 do redis.call('del', unpack(keys, i, math.min(i+4999, #keys))) end return #keys" 0 'Volume:*'[2 番目の方法の欠点]: KEYS のオンライン操作は禁止されています! Redis はシングルスレッドです。ボリュームが大きい場合、キーが走査され、ブロッキングが発生するため、他のクライアントは接続できなくなります。 [3つ目の方法]: redis2.8からscanコマンドがサポートされ、以下のようなパターンマッチングで大量のキーを一括削除することができます
redis-cli -a youpassowrd -n 0 -p 6379 --scan --pattern "Volume:*" | xargs -L 5000 redis-cli -a youpassword -n 0 -p 6379 DEL[結果]:
''' /work/app/redis/bin/redis-cli -a youpassword -n 0 -p 6379 --scan --pattern "Volume:*" | xargs -L 5000 /work/app/redis/bin/redis-cli -a youpassword -n 0 -p 6379 DEL (integer) 5000 (integer) 5000 (integer) 5000 (integer) 5000 (integer) 5000 (integer) 5000 (integer) 5000 (integer) 207 '''redis の詳細については、
redis 入門チュートリアル 列に注目してください。
以上が一括削除のための Redis コマンドの概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。