我有简单的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。任何人都可以建议
答案 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)。
希望有所帮助!