Redis 的 ZRANGE 命令用于返回 有序集 KEY 中,指定区间内的成员。其中成员的位置按 score 值递增(从小到大)来排序。具有相同 score 值的成员按字典序来排列。
如果你需要成员按 score 值递减(从大到小)来排列,请使用 ZREVRANGE 命令。
下标参数 start 和 stop 都以 0 为底,也就是说,以 0 表示有序集第一个成员,以 1 表示有序集第二个成员,以此类推。你也可以使用负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。
可以通过使用 WITHSCORES 选项,来让成员和它的 score 值一并返回,返回列表以 value1,score1, …, valueN,scoreN 的格式表示。
192.168.98.70:6379> ZRANGE KEY start stop [WITHSCORES]
参数 | 描述 |
---|---|
KEY | 有序集合的键。 |
start | 要获取的元素的开始索引。 |
stop | 要获取的元素的结束索引。 |
WITHSCORES | 可选,是否需要获取分数。 |
指定区间内,带有 score 值(可选)的有序集成员的列表。
O(log(N)+M), N 为有序集的基数,而 M 为结果集的基数。
>= 1.2.0
超出范围的下标并不会引起错误。
KEY 不存在,返回空集合
192.168.98.70:6379> EXISTS haicoder (integer) 0 192.168.98.70:6379> ZRANGE haicoder 0 10 (empty list or set)
我们首先,使用 EXISTS 命令,判断键为 haicoder 的集合不存在。接着,使用 ZRANGE 命令,获取不存在的集合的所有元素,返回空集合。
KEY 存在,返回指定区间的元素
192.168.98.70:6379> ZADD haicoder 100 Redis 50 Mongo 200 Mysql 10 SqlServer (integer) 4 192.168.98.70:6379> ZRANGE haicoder 0 2 1) "SqlServer" 2) "Mongo" 3) "Redis" 192.168.98.70:6379> DEL haicoder (integer) 1
我们首先,使用 ZADD 命令,同时向键为 haicoder 的集合插入元素 Redis,分数为 100,元素 Mongo,分数为 50,元素 Mysql,分数为 200,元素 SqlServer,分数为 10。
最后,我们使用 ZRANGE 命令,获取键为 haicoder 的集合下标 0 到 2 的元素列表,元素是按照分数从小到大排序的。
负数索引,表示从列表最后一个元素开始往前获取
192.168.98.70:6379> ZADD haicoder 100 Redis 50 Mongo 200 Mysql 10 SqlServer (integer) 4 192.168.98.70:6379> ZRANGE haicoder 0 -2 1) "SqlServer" 2) "Mongo" 3) "Redis" 192.168.98.70:6379> ZRANGE haicoder 0 -1 1) "SqlServer" 2) "Mongo" 3) "Redis" 4) "Mysql" 192.168.98.70:6379> DEL haicoder (integer) 1
我们首先,使用 ZADD 命令,同时向键为 haicoder 的集合插入元素 Redis,分数为 100,元素 Mongo,分数为 50,元素 Mysql,分数为 200,元素 SqlServer,分数为 10。
接着,使用 ZRANGE 命令,获取键为 haicoder 的集合下标 0 到 -2 的元素列表,即获取第一个元素到倒数第二个元素的列表。
最后,我们使用 ZRANGE 命令,获取键为 haicoder 的集合下标 0 到 -1 的元素列表,即获取第一个元素到最后一个元素的列表。
使用 WITHSCORES 选项,获取元素的分数
192.168.98.70:6379> ZADD haicoder 100 Redis 50 Mongo 200 Mysql 10 SqlServer (integer) 4 192.168.98.70:6379> ZRANGE haicoder 0 -1 WITHSCORES 1) "SqlServer" 2) "10" 3) "Mongo" 4) "50" 5) "Redis" 6) "100" 7) "Mysql" 8) "200" 192.168.98.70:6379> DEL haicoder (integer) 1
我们首先,使用 ZADD 命令,同时向键为 haicoder 的集合插入元素 Redis,分数为 100,元素 Mongo,分数为 50,元素 Mysql,分数为 200,元素 SqlServer,分数为 10。
最后,我们使用 ZRANGE 命令,获取键为 haicoder 的集合的第一个元素到最后一个元素的列表,同时返回每个元素对应的分数值,这里可以看出元素的分数值按照从小到大进行排序。
Redis 的 ZRANGE 命令用于返回有序集 KEY 中,指定区间内的成员。Redis ZRANGE 命令语法:
192.168.98.70:6379> ZRANGE KEY start stop [WITHSCORES]