["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つのキーを送信すると、このコードは機能します。
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を使用しないでください-大規模な本番システムでは危険です。