使用node-redis删除redis中的密钥数组

我有像“[aaa”,“bbb”,“ccc”]键的数组,所以我想要使用一个命令从redis中删除所有这些键。 我不想迭代使用循环。 我读了关于redis命令DEL和在terminalredis客户端它工作,但使用nodejs它不起作用

Redisclient.del(tokenKeys,function(err,count){ Logger.info("count is ",count) Logger.error("err is ",err) }) 

其中tokenKeys = [“aaa”,“bbb”,“ccc”],这个代码是工作,如果我发送一个键,如tokenKeys =“aaa”

你可以按如下方式传递数组

 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 

显示设置后打印的按键,但删除后不打印

del函数直接在Redis DB客户端中实现,即redis.del("aaa","bbb","ccc")将删除多个项目

为了使它与数组使用JavaScript应用方法:

 redis.del.apply(redis, ["aaa","bbb","ccc"]) 

当然,在当前版本的node_redis(v2.6.5)中,可以使用以逗号分隔的键列表或键列数组来删除它们。 在这里看到两个testing。

 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']); 

node-redis不能像那样工作,但是如果你真的有很多的del命令,它会自动把它们处理,所以它可能比你想象的循环中更有效率。

你也可以用multi来试试这个模块 :

 var redis = require("redis"), client = redis.createClient(), multi; client.multi([ ["del", "key1"], ["del", "key2"] ]).exec(function (err, replies) { console.log(replies); });