教程 > Redis教程 > Redis 命令 阅读:14

Redis ZRANGEBYSCORE 命令

Redis ZRANGEBYSCORE 命令

返回 Redis有序集合(sorted sets)


Redis ZRANGEBYSCORE 返回有序集合中指定分数区间的成员列表。有序集成员按分数值递增(从小到大)次序排列。

具有相同分数值的成员按字典序来排列(该属性是有序集提供的,不需要额外的计算)。

默认情况下,区间的取值使用闭区间 (小于等于或大于等于),你也可以通过给参数前增加 ( 符号来使用可选的开区间 (小于或大于)。

举个例子:

redis 127.0.0.1:6379> ZRANGEBYSCORE zset (1 5

返回所有符合条件 1 < score <= 5 的成员,而

redis 127.0.0.1:6379> ZRANGEBYSCORE zset (5 (10

则返回所有符合条件 5 < score < 10 的成员。

语法

redis Zrangebyscore 命令基本语法如下:

redis 127.0.0.1:6379> ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

可选的 LIMIT 参数指定返回结果的数量及区间(就像SQL中的 SELECT LIMIT offset, count ),注意当 offset 很大时,定位 offset 的操作可能需要遍历整个有序集,此过程最坏复杂度为 O(N) 时间。

可选的 WITHSCORES 参数决定结果集是单单返回有序集的成员,还是将有序集成员及其 score 值一起返回。 该选项自 Redis 2.0 版本起可用。

可用版本

>= 1.0.5

返回值

指定区间内,带有分数值(可选)的有序集成员的列表。

示例

redis 127.0.0.1:6379> ZADD salary 2500 jack                        # 测试数据
(integer) 0
redis 127.0.0.1:6379> ZADD salary 5000 tom
(integer) 0
redis 127.0.0.1:6379> ZADD salary 12000 peter
(integer) 0

redis 127.0.0.1:6379> ZRANGEBYSCORE salary -inf +inf               # 显示整个有序集
1) "jack"
2) "tom"
3) "peter"

redis 127.0.0.1:6379> ZRANGEBYSCORE salary -inf +inf WITHSCORES    # 显示整个有序集及成员的 score 值
1) "jack"
2) "2500"
3) "tom"
4) "5000"
5) "peter"
6) "12000"

redis 127.0.0.1:6379> ZRANGEBYSCORE salary -inf 5000 WITHSCORES    # 显示工资 <=5000 的所有成员
1) "jack"
2) "2500"
3) "tom"
4) "5000"

redis 127.0.0.1:6379> ZRANGEBYSCORE salary (5000 400000            # 显示工资大于 5000 小于等于 400000 的成员
1) "peter"

时间复杂度

ZRANGEBYLEX 命令时间复杂度:O(log(N)+M) N是有序集合中元素的个数,M是返回的元素的个数。如果M是一个常数,我们可以认为其时间复杂度为O(log(N))

返回 Redis有序集合(sorted sets)

查看笔记

扫码一下
查看教程更方便