为什么';t redis SADD在node.js中使用数组作为输入?

为什么';t redis SADD在node.js中使用数组作为输入?,node.js,redis,Node.js,Redis,我正在使用并尝试一次更新具有多个值的集合(在redis cli上“SADD myset val1 val2”工作正常) 我使用的确切命令是: var cmd_array = ['myset', 'val1', 'val2']; client.sadd(cmd_array); 根据他们的文件,这应该是可行的。知道为什么没有吗 谢谢这对我来说很好用。 我可以毫无问题地运行以下脚本: var redis = require("redis"), client_options = { p

我正在使用并尝试一次更新具有多个值的集合(在redis cli上“SADD myset val1 val2”工作正常)

我使用的确切命令是:

var cmd_array = ['myset', 'val1', 'val2'];
client.sadd(cmd_array);
根据他们的文件,这应该是可行的。知道为什么没有吗

谢谢

这对我来说很好用。 我可以毫无问题地运行以下脚本:

var redis = require("redis"),
    client_options = {
    parser: "hiredis"
};

var credis = redis.createClient( '/tmp/redis.sock', client_options );

function main()
{
   credis.flushall( function(err,res) {
      console.log( "hello" );
      x = [ "X", "A", "B", "C" ];
      credis.sadd(x);
      credis.sadd( "myset", x, function(err,res) {
         console.log("done");
         credis.end();
      });
   });
}

main();
它将创建两个具有预期项数的键:

redis 127.0.0.1:6379> keys *                                                                                                                                                                                                                 
1) "X"                                                                                                                                                                                                                                       
2) "myset"                                                                                                                                                                                                                                   
redis 127.0.0.1:6379> smembers myset                                                                                                                                                                                                         
1) "X"                                                                                                                                                                                                                                       
2) "A"                                                                                                                                                                                                                                       
3) "B"                                                                                                                                                                                                                                       
4) "C"                                                                                                                                                                                                                                       
redis 127.0.0.1:6379> smembers X                                                                                                                                                                                                             
1) "A"                                                                                                                                                                                                                                       
2) "B"                                                                                                                                                                                                                                       
3) "C"                                                                                                                                                                                                                                       
我建议您检查node\u redis版本。 我使用的版本是:

$ npm list
/home/dspezia/local/test_redis
├── hiredis@0.1.14 
└── redis@0.7.1 
这对我来说很好。 我可以毫无问题地运行以下脚本:

var redis = require("redis"),
    client_options = {
    parser: "hiredis"
};

var credis = redis.createClient( '/tmp/redis.sock', client_options );

function main()
{
   credis.flushall( function(err,res) {
      console.log( "hello" );
      x = [ "X", "A", "B", "C" ];
      credis.sadd(x);
      credis.sadd( "myset", x, function(err,res) {
         console.log("done");
         credis.end();
      });
   });
}

main();
它将创建两个具有预期项数的键:

redis 127.0.0.1:6379> keys *                                                                                                                                                                                                                 
1) "X"                                                                                                                                                                                                                                       
2) "myset"                                                                                                                                                                                                                                   
redis 127.0.0.1:6379> smembers myset                                                                                                                                                                                                         
1) "X"                                                                                                                                                                                                                                       
2) "A"                                                                                                                                                                                                                                       
3) "B"                                                                                                                                                                                                                                       
4) "C"                                                                                                                                                                                                                                       
redis 127.0.0.1:6379> smembers X                                                                                                                                                                                                             
1) "A"                                                                                                                                                                                                                                       
2) "B"                                                                                                                                                                                                                                       
3) "C"                                                                                                                                                                                                                                       
我建议您检查node\u redis版本。 我使用的版本是:

$ npm list
/home/dspezia/local/test_redis
├── hiredis@0.1.14 
└── redis@0.7.1 

谢谢迪迪埃的回复。我使用的是版本0.7.2,顺便说一句,我得到的确切错误是“error:error:ERR'sadd'命令的参数数目错误”刚刚在我安装的版本(0.7.2)上运行了您的代码,它抛出了相同的错误。问题是我的安装还是版本有问题。我已经升级到0.7.2,它对我来说仍然可以正常工作。还有node.js版本本身需要检查。您是否使用开发分支(即版本>0.6.16)?最后一点,您使用的是哪个版本的redis服务器?我的是Redis服务器版本2.2.12(00000000:0)啊,可能就是这样。Redis2.2现在已经很老了。可变参数命令已添加到2.4中。这里的变更日志:谢谢迪迪埃的回复。我使用的是版本0.7.2,顺便说一句,我得到的确切错误是“error:error:ERR'sadd'命令的参数数目错误”刚刚在我安装的版本(0.7.2)上运行了您的代码,它抛出了相同的错误。问题是我的安装还是版本有问题。我已经升级到0.7.2,它对我来说仍然可以正常工作。还有node.js版本本身需要检查。您是否使用开发分支(即版本>0.6.16)?最后一点,您使用的是哪个版本的redis服务器?我的是Redis服务器版本2.2.12(00000000:0)啊,可能就是这样。Redis2.2现在已经很老了。可变参数命令已添加到2.4中。更改日志: