Node-redis: node-redisを使用してredisのキーの配列を削除します

作成日 2015年09月29日  ·  5コメント  ·  ソース: NodeRedis/node-redis

["aaa"、 "bbb"、 "ccc"]のようなキーの配列があるので、1つのコマンドを使用してredisからこれらすべてのキーを削除したいと思います。 ループを使用して反復したくありません。 私はredisコマンドDELについて読み、ターミナルredis-clientでそれは機能しますが、nodejsを使用すると機能しません

Redisclient.del(tokenKeys、function(err、count){
Logger.info( "count is"、count)
Logger.error( "err is"、err)
})

ここで、tokenKeys = ["aaa"、 "bbb"、 "ccc"]の場合、tokenKeys = "aaa"のように1つのキーを送信すると、このコードは機能します。

question

全てのコメント5件

client.delは、可変数の引数を取ることができます。 applyを使用して、配列を引数に変換できます(ただし、コールバックもプッシュする必要があります)。 次のようになります。

var tokenKeys = ["aaa","bbb","ccc"];

tokenKeys.push(function(err,count){
Logger.info("count is ",count)
Logger.error("err is ",err)
});

Redisclient.del.apply(Redisclient,tokenKeys);

それは少し奇妙ですが、それは繰り返さずに仕事を得るでしょう。

@abhaygargこれは、あなたが書いたように、箱から出してすぐに機能するはずです。 より多くのコードを提供できますか? エラーはコードのどこかにあると思います。 そして、どのバージョンを使用していますか?

@stockholmuxこれは問題の解決策ではありません。 実際には、引数を使用するのではなく、すぐに配列表記を使用することをお勧めします(引数は内部配列に書き換えられます)。

ええ、その動作は、Redisclient.del(tokenKeys、function(err、count){で配列を直接渡すことができます
Logger.info( "count is"、count)
Logger.error( "err is"、err)
})
それはうまく削除しますあなたはRedisclient.del()で配列を渡すことができますそれはうまくいきます

app.redis.keys('key_*', (err, keys) => {
    keys.forEach(key => {
        app.redis.del(key)
    })
})

@knoxcard参考までに-KEYSを使用しないでください-大規模な本番システムでは危険です。

このページは役に立ちましたか?
0 / 5 - 0 評価