Redis.lpush命令:向列表头部插入多个元素

9

在我的node.js脚本中,我有一个字符串数组,我想将这些字符串LPUSH到Redis队列中。我尝试了:

var redis = require('redis').createClient();
redis.lpush('queue', ['1', '2', '3'])

这会导致只有一个字符串被推送:
redis 127.0.0.1:6379> lrange queue 0 -1
1) "1,2,3"

Redis支持在LPUSH命令中插入多个值,我需要帮助利用这个功能。我不是在问如何循环遍历数组并逐个推送每个项。 :)

编辑:

我知道如果我这样做:

redis.lpush('queue', '1', '2', '3')

我得到了我期望的结果,但在我的实际应用中,数组是在运行时生成的,我不知道它的内容。

2个回答

23

使用es6 扩展语法,现在可以实现这一点。任何大小的数组都将作为函数参数展开。

redis.lpush('queue', ...arrayOfValues)

2
你甚至不需要再使用扩展语法了,只需传递一个数组即可。附注:这个答案比被接受的答案更为更新。 - Richard Dunn

8

这似乎是一个已知问题/常见请求

其中一种建议的解决方法是直接使用send_command

你也可以尝试这个(我自己没试过):

myvalues.unshift('queue');
redis.lpush.apply(redis, myvalues);

谢谢。send_commandapply都能正常工作,除了unshift返回新长度之外,所以我必须将其作为单独语句处理。 - akonsu
1
= 2.4:接受多个值参数。在 Redis 2.4 以前的版本中,每个命令只能推送一个单一的值。文档
- sarkiroka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接