使用node-redis删除redis中的键数组

abh*_*493 7 redis node.js node-redis

我有像["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)

         })
Run Code Online (Sandbox Code Playgroud)

其中tokenKeys = ["aaa","bbb","ccc"],如果我发送一个像tokenKeys ="aaa"这样的密钥,这个代码就可以工作了

Phi*_*ien 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);
    });
});
Run Code Online (Sandbox Code Playgroud)

如果运行上面的代码,您将获得以下输出

$ node index.js
string key
hash key
aaa
ccc
bbb
string key
hash key
Run Code Online (Sandbox Code Playgroud)

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


Geo*_*ord 5

当然,在当前版本的 node_redis (v2.6.5) 中,可以使用逗号分隔的键列表或键数组来删除两者。在此处查看两者的测试。

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']);
Run Code Online (Sandbox Code Playgroud)


Jas*_*say 1

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);
});
Run Code Online (Sandbox Code Playgroud)