9

CentOS に Redis をインストールしており、このように複数の redis のキーを持っています。

Product:<id>:<url>

Product:*:* CLI ですべてを削除するにはどうすればよいですか?

Redis バージョン: 3.2.4 [最新だと思います]

ありがとう!

4

6 に答える 6

24

このredis-cliツールを使用すると、次のことができます。

redis-cli --scan --pattern 'Product:*:*' | xargs redis-cli DEL
于 2016-11-18T16:32:15.013 に答える
-1

それにはいくつかの方法があります。

  1. https://gist.github.com/ddre54/0a4751676272e0da8186 KEYS キーワードを使用しているため、本番サーバーでは推奨されません
  2. Redis >= 2.6.12 および (Node.js >= 6) をサポートするioredis ( https://github.com/luin/ioredis#streamify-scanning ) の使用

2 番目の例に従う場合は、次の手順を実行します。

  1. ノード js をインストール >=6
  2. フォルダーを作成し、その中に次のコマンドを実行して ioredis をインストールします。

    npm install ioredis

  3. そのフォルダー内に、次の内容の redis.js ファイルを作成します

    module.exports.redisDel = function(key) {
    console.log("del started for key: ", key);
    var Redis = require("ioredis");
    
    var redis = new Redis({
        port: 6379, // Redis port
        host: "192.168.93.27", // Redis host
        family: 4, // 4 (IPv4) or 6 (IPv6)
        password: "SetCorrectPassword"
    });
    
    return new Promise((resolve, reject) => {
    
        var stream = redis.scanStream({
            // only returns keys following the pattern of "key"
            match: key,
            // returns approximately 100 elements per call
            count: 100
        });
    
        stream.on('data', function (resultKeys) {
            if (resultKeys.length) {
                console.log(resultKeys)
                redis.del(resultKeys); //from version 4 use unlink instead of del
            }
            else {
                console.log("nothing found");
            }
        });
        stream.on('end', function (resultKeys) {
            console.log("end");
            resolve()
        })
    })
    

    }

  4. 目的のキー (この場合は yourKey*) を渡してスクリプトを実行します。

node -e 'require(\"./redis\").redisDel(\"yourKey*\")'

于 2019-09-03T15:24:16.347 に答える