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"
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
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']);
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"])
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);
});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With