当我在以前将包含4个值的数组推入的列表上使用rpop时,Redis将按预期返回所有4个值。我的问题是它们作为单个值返回。有没有办法让Redis返回一个包含4个值的数组,而不是返回该数组包含的4个值?我正在使用node_redis客户端https://github.com/NodeRedis/node_redis。这是一些代码,可让您大致了解我在做什么。
redisClient.lpush(data.pushKey, data.rowTest);
data.rowtest看起来像这样[0,496,1,48]。
redisClient.rpop(data.popKey, function (err, res) {
if (err) { console.log(err); }
if (res !== null) {
client.send("fromList", { content: res });
console.log(res);
}
});
我期望单行输出[0,496,1,48],但是我得到 0 496 1个 48 每个都放在单独的行上。
好吧,我很确定在解决上述问题之前,我需要学习如何使用异步javascript。
答案 0 :(得分:0)
您需要确定它是4个元素中的单个元素。
如果要将每个值都视为一个元素,则需要分别发送它们,请参见this answer,然后在要弹出它时需要询问所有4个值。
如果要将整个数组作为单个值,则可以保留代码,并使用windows
将结果转换回数组。
答案 1 :(得分:0)
好吧,这应该更明显了,这给我留下了其他一些问题,但是我通过在推送之前使用JSON.stringfy()和在弹出之后使用JSON.parse()解决了我的问题。 我猜想node_redis开发人员想保持数组和Redis列表之间的相似性,因此将数组值带入Redis列表...或Redis列表只是数组,因此这些数组可以串联为现有列表。