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

时间:2012-05-22 13:27:05

标签: redis

我有简单的redis list key => “supplier_id”

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

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

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

这可以通过更好的redis建模完成没有迭代 perhap。任何人都可以建议

2 个答案:

答案 0 :(得分:131)

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

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

elements = redis.lrange( "supplier_id", 0, -1 )

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

答案 1 :(得分:2)

我对您的问题有点不清楚,但如果supplier_id是数字,为什么不使用ZSET

像这样添加你的值:

ZADD suppliers 1 "data for supplier 1"  
ZADD suppliers 2 "data for supplier 2"  
ZADD suppliers 3 "data for supplier 3"  

然后您可以删除所有内容(但不包括供应商3),如下所示:

ZREMRANGEBYSCORE suppliers -inf 2

ZREMRANGEBYSCORE suppliers -inf (3

如果您只是想从中读取,那么也可以非常快速地访问(按供应商ID)。

希望有所帮助!

相关问题