86

我有简单的 redis 列表键 => "supplier_id"

现在我只希望它检索列表的所有值而不实际迭代或从列表中弹出值

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

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

这可以在没有迭代的情况下通过更好的 redis 建模来完成吗?谁能建议

4

2 回答 2

195

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

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

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

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

于 2012-05-22T20:26:41.060 回答
2

我对你的问题有点不清楚,但如果供应商 ID 是数字,为什么不使用 a ZSET

像这样添加您的值:

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

然后,您可以像这样删除所有内容(但不包括供应商三):

ZREMRANGEBYSCORE suppliers -inf 2

或者

ZREMRANGEBYSCORE suppliers -inf (3

如果您只想从中读取,这也使您可以非常快速地访问(通过供应商 ID)。

希望有帮助!

于 2012-05-22T15:39:50.140 回答