我正在尝试使用 LPUSH 将多个值推送到 redis LIST。代码看起来像这样:
mylist = ["1", "2", "3", "4"]
$redis.lpush(name, mylist)
上面的问题是列表变得扁平,看起来像“1234”。在这种情况下,如何使用 LPUSH 将 4 个单独的元素推送到name
数组中?
你可能想看看:
Redis-rb 2.2.2 版不支持可变参数命令。它们已在 3.0 版中引入,但尚未交付。
可变参数命令中没有处理数组的具体方法。您的代码可能适用于 3.0 版。
同时,我建议您使用管道,例如:
name = "toto"
mylist = [ 1,2,3,4,5 ]
$redis.pipelined{ mylist.each{ |x| $redis.lpush(name,x) } }
使用管道,往返次数将与使用可变参数命令相同。
如果您真的想使用可变参数命令,您可以使用以下命令轻松安装 3.0 的预发布版本:
gem install --prerelease redis
gem list redis
*** LOCAL GEMS ***
redis (3.0.0.rc1, 2.2.2)
并使用以下方法在您的脚本中激活它:
gem 'redis', '3.0.0.rc1'
require 'redis'
请注意,如果您有其他依赖于 redis gem 的 gem,您将遇到一些依赖问题。最好等待 IMO 正式交付。
你可以这样做:
# If you want ["1","2","3","4",...restofarray...]
mylist.reverse.each{ |v| $redis.lpush(name,v) }
# If you want ["4","3","2","1",...restofarray...]
mylist.each{ |v| $redis.lpush(name,v) }
对于 v 3.0 +,语法是
r= Redis.new()
r.lpush("mylist", ["element1", "element2" , "element3"])