使用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); });