我有一个已排序的集合,并想要获取集合中所有成员。如何使用命令确定最大/最小分数:
zrange key min max
你很幸运,因为zrange
不接受分数,而是索引。 0
是第一个索引,-1
将被解释为最后一个索引:
zrange key 0 -1
zrangebyscore
-- 在这里,-inf
和+inf
可以分别用于表示负无穷和正无穷,正如Didier Spezia在他的评论中指出的那样:zrangebyscore key -inf +inf
zrange <KEY> 0 -1 WITHSCORES
可选的WITHSCORES参数会将元素的分数与返回的结果一起返回。返回的列表包含value1,score1,...,valueN,scoreN而不是只有value1,...,valueN。客户端库可以返回更适当的数据类型(建议:一个包含(value,score)数组/元组的数组)。ZRANGE key min max BYSCORE
添加BYSCORE
选项使redis将min
和max
参数视为分数而不是索引。
(截至本文撰写时,ZRANGEBYSCORE
仍然有效,但被视为已弃用。)
zrange key 0 -1
是否存在与SMEMBERS
和KEYS
等调用相同的 I/O 问题?Redis 文档在SMEMBERS
中非常明确地指出使用SSCAN
可能更好,但它对于ZSCAN
而言并没有提到ZRANGE ... 0 -1
。 - dwandersonzrangebyscore
设置,无论是(string)+inf
还是(number)Number.POSITIVE_INFINITY
都可以使用。 - OXiGENzrangebyscore
设置,无论是(string)+inf
还是(number)Number.POSITIVE_INFINITY
都可以使用。 - undefined