我有像[“aaa”,“bbb”,“ccc”]这样的键数组,所以我想使用一个命令从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”
的密钥,这段代码就可以了答案 0 :(得分:9)
您可以按如下方式传递数组
var redis = require("redis"),
client = redis.createClient();
client.on("error", function (err) {
console.log("Error " + err);
});
client.set("aaa", "aaa");
client.set("bbb", "bbb");
client.set("ccc", "ccc");
var keys = ["aaa", "bbb", "ccc"];
client.keys("*", function (err, keys) {
keys.forEach(function (key, pos) {
console.log(key);
});
});
client.del(keys, function(err, o) {
});
client.keys("*", function (err, keys) {
keys.forEach(function (key, pos) {
console.log(key);
});
});
如果您运行上面的代码,您将获得以下输出
$ node index.js
string key
hash key
aaa
ccc
bbb
string key
hash key
显示设置后打印的键,但删除后不打印
答案 1 :(得分:4)
当然,在当前版本的node_redis(v2.6.5)中,可以使用逗号分隔的键列表或键组来删除它们。请参阅here的测试。
var redis = require("redis");
var client = redis.createClient();
client.set('foo', 'foo');
client.set('apple', 'apple');
// Then either
client.del('foo', 'apple');
// Or
client.del(['foo', 'apple']);
答案 2 :(得分:3)
del函数直接在Redis DB客户端中实现,
即redis.del("aaa","bbb","ccc")
会删除多个项目
要使其适用于数组,请使用JavaScript apply方法:
redis.del.apply(redis, ["aaa","bbb","ccc"])
答案 3 :(得分:1)
node-redis
不能那样工作但是如果你真的有很多del
命令,它会自动管道它们,所以它可能比你想象的更有效率。 / p>
您还可以使用multi:
尝试此modulevar redis = require("redis"),
client = redis.createClient(), multi;
client.multi([
["del", "key1"],
["del", "key2"]
]).exec(function (err, replies) {
console.log(replies);
});