如何将javascript数组保存为redis列表

以下代码将整个数组保存为redis列表中的单个值。 但我想单独保存数组值。 我该怎么做?

PS对于英语不好,真抱歉。

var redis = require('redis'), client = redis.createClient(); var arr = [1,2,3]; client.rpush('testlist',arr); 

使用multi()来一次传输多个命令:

 var redis = require('redis'), client = redis.createClient(); var arr = [1,2,3]; var multi = client.multi() for (var i=0; i<arr.length; i++) { multi.rpush('testlist', arr[i]); } multi.exec(function(errors, results) { }) 

最后调用exec()将命令发送到redis。

即使@gimenete答案的作品,做你想做的最好的方法是将列表元素作为参数转发给rpush像这样:

 var redis = require('redis'), client = redis.createClient(); var arr = [1,2,3]; client.rpush.apply(client, ['testlist'].concat(arr)); // ... or with a callback client.rpush.apply(client, ['testlist'].concat(arr).concat(function(err, ok){ console.log(err, ok); })); 

优点 : – 一条指令将被传送到Redis

缺点 : – 一个angular落案例:。应用.apply将抛出一个RangeError: Maximum call stack size exceeded如果传递给rpush的参数列表的长度过大(对于v8超过100 000个项目)。

从MDC:

应用具有太多参数的函数(思考超过数以万计的参数)的后果在引擎之间变化(JavaScriptCore具有65536的硬编码参数限制),因为限制(实际上甚至是任何过大的栈的性质行为)未指定。 有些引擎会抛出exception。 更有害的是,其他人将任意限制实际传递给应用函数的参数的数量。