Reputation: 1605
I have arrays of keys like ["aaa","bbb","ccc"] so I want to delete all these keys from redis using one command . I donot want to iterate using loop . I read about redis command DEL and on terminal redis-client it works but using nodejs it does not work
Redisclient.del(tokenKeys,function(err,count){
Logger.info("count is ",count)
Logger.error("err is ",err)
})
where tokenKeys=["aaa","bbb","ccc"] , this code is work if I send one key like tokenKeys="aaa"
Upvotes: 12
Views: 25975
Reputation: 333
Certainly at current version of node_redis (v2.6.5) it is possible to delete both with a comma separated list of keys or with an array of keys. See tests for both 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']);
Upvotes: 10
Reputation: 31
del function is implemented directly as in Redis DB client,
I.e. redis.del("aaa","bbb","ccc")
will remove multiple items
To make it work with array use JavaScript apply approach:
redis.del.apply(redis, ["aaa","bbb","ccc"])
Upvotes: 3
Reputation: 4266
You can just pass the array as follows
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);
});
});
If you run the above code you will get the following output
$ node index.js
string key
hash key
aaa
ccc
bbb
string key
hash key
showing the keys printed after being set, but not printed after deletion
Upvotes: 16
Reputation: 6377
node-redis
doesn't work like that but if you really have a lot of del
commands it will pipeline them automatically so it is probably more efficient than you think to do it in a loop.
You can also try this module with multi:
var redis = require("redis"),
client = redis.createClient(), multi;
client.multi([
["del", "key1"],
["del", "key2"]
]).exec(function (err, replies) {
console.log(replies);
});
Upvotes: 1