Redis在没有迭代的情况下获取列表的所有值而不弹出

Vir*_*ren 61 redis

我有简单的redis list key =>"supplier_id"

现在我想要它检索列表的所有值而不实际迭代或弹出列表中的值

从列表中检索所有值的示例现在我已经迭代了redis长度

element = []
0.upto(redis.llen("supplier_id")-1) do |index| 
  element << redis.lindex("supplier_id",index)
 end
Run Code Online (Sandbox Code Playgroud)

这可以在没有迭代 perhap的情况下完成,具有更好的redis建模.有谁能建议

Did*_*zia 144

要使用Redis检索列表的所有项目,您不需要迭代和获取每个单独的项目.这将是非常低效的.

您只需使用LRANGE命令一次性检索所有项目.

elements = redis.lrange( "supplier_id", 0, -1 )
Run Code Online (Sandbox Code Playgroud)

将返回列表中的所有项目而不更改列表本身.

  • 如果内存效率是指对项目进行增量迭代,则可以使用 llen 并在 lrange 调用上循环来实现,但这会增加往返次数,并且会失去一致性。 (3认同)
  • 有没有办法以内存有效的方式这样做? (2认同)
  • 如果使用RPUSH而不是LPUSH插入,它将按相同的顺序插入. (2认同)