我有像 ["aaa","bbb","ccc"] 这样的键数组,所以我想使用一个命令从 redis 中删除所有这些键。 我不想使用循环进行迭代。 我阅读了有关 redis 命令 DEL 和终端 redis-client 它的工作,但使用 nodejs 它不起作用
Redisclient.del(tokenKeys,function(err,count){
Logger.info("计数为",count)
Logger.error("err is ",err)
})
其中 tokenKeys=["aaa","bbb","ccc"] ,如果我发送一个像 tokenKeys="aaa" 这样的键,这个代码就可以工作
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)
Logger.error("err is ",err)
})
它删除很好你可以在 Redisclient.del() 中传递数组它工作正常
app.redis.keys('key_*', (err, keys) => {
keys.forEach(key => {
app.redis.del(key)
})
})
@knoxcard仅供参考 - 不要使用 KEYS - 这在大型生产系统上很危险。