Redis 的 ZREVRANGEBYSCORE 命令用于返回 有序集 KEY 中, score 值介于 max 和 min 之间(默认包括等于 max 或 min )的所有的成员。有序集成员按 score 值递减(从大到小)的次序排列。
具有相同 score 值的成员按字典序的逆序排列。除了成员按 score 值递减的次序排列这一点外,ZREVRANGEBYSCORE 命令的其他方面和 ZRANGEBYSCORE 命令一样。
192.168.98.70:6379> ZREVRANGEBYSCORE KEY max min [WITHSCORES] [LIMIT offset count]
参数 | 描述 |
---|---|
KEY | 有序集合的键。 |
max | score 的最大值。 |
min | score 的最小值。 |
WITHSCORES | 可选,是否需要获取分数。 |
LIMIT | 如果需要获取指定条数,需要使用该关键字。 |
offset | 从哪条记录开始获取。 |
count | 要获取多少条。 |
指定区间内,带有 score 值(可选)的有序集成员的列表。
O(log(N)+M), N 为有序集的基数, M 为结果集的基数。
>= 2.2.0
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 -1 WITHSCORES 1) "SqlServer" 2) "10" 3) "Mongo" 4) "50" 5) "Redis" 6) "100" 7) "Mysql" 8) "200" 192.168.98.70:6379> ZREVRANGEBYSCORE haicoder 0 100 WITHSCORES (empty list or set) 192.168.98.70:6379> ZRANGEBYSCORE haicoder 0 100 WITHSCORES 1) "SqlServer" 2) "10" 3) "Mongo" 4) "50" 5) "Redis" 6) "100" 192.168.98.70:6379> ZREVRANGEBYSCORE haicoder 100 0 WITHSCORES 1) "Redis" 2) "100" 3) "Mongo" 4) "50" 5) "SqlServer" 6) "10 192.168.98.70:6379> DEL haicoder (integer) 1
我们首先,使用 ZADD 命令,同时向键为 haicoder 的集合插入元素 Redis,分数为 100,元素 Mongo,分数为 50,元素 Mysql,分数为 200,元素 SqlServer,分数为 10。
接着,使用 ZRANGE 命令,获取键为 haicoder 的集合中的所有元素,并打印出对应的分数,元素按照分数从小到大排序。
使用 ZREVRANGEBYSCORE 命令,获取集合 haicoder 中分数在 0 到 100 之间的成员,包括 0 分和 100 分的,此时的 max 为 0,min 为 100,因为 max 小于 min,所以返回空集合。
再次,使用使用 ZRANGEBYSCORE 命令,获取集合 haicoder 中分数在 0 到 100 之间的成员,此时的 min 为 0,max 为 100,返回了集合中对应的元素列表,元素的排列顺序为分数从大到小。
最后,我们使用 ZREVRANGEBYSCORE 命令,获取集合 haicoder 中分数在 0 到 100 之间的成员,此时的 max 为 100,min 为 0,因为 max 大于 min,返回了集合中对应的元素列表。
使用 ( 表示分数值为开区间
192.168.98.70:6379> ZADD haicoder 100 Redis 50 Mongo 200 Mysql 10 SqlServer (integer) 4 192.168.98.70:6379> ZREVRANGEBYSCORE haicoder (100 0 1) "Mongo" 2) "SqlServer" 192.168.98.70:6379> DEL haicoder (integer) 1
我们首先,使用 ZADD 命令,同时向键为 haicoder 的集合插入元素 Redis,分数为 100,元素 Mongo,分数为 50,元素 Mysql,分数为 200,元素 SqlServer,分数为 10。
最后,我们使用 ZREVRANGEBYSCORE 命令,获取集合 haicoder 中分数在 0 到 100 之间的成员,此时分数 100 加了 ( 修饰,即 100 是开区间,所以返回的元素列表中不包含分数为 100 的。
-inf 表示最小值为无穷小,+inf 表示最大值为无穷大
192.168.98.70:6379> ZADD haicoder 100 Redis 50 Mongo 200 Mysql 10 SqlServer (integer) 4 192.168.98.70:6379> ZREVRANGEBYSCORE haicoder +inf -inf 1) "Mysql" 2) "Redis" 3) "Mongo" 4) "SqlServer" 192.168.98.70:6379> DEL haicoder (integer) 1
我们首先,使用 ZADD 命令,同时向键为 haicoder 的集合插入元素 Redis,分数为 100,元素 Mongo,分数为 50,元素 Mysql,分数为 200,元素 SqlServer,分数为 10。
最后,我们使用 ZREVRANGEBYSCORE 命令,分数设置为从无穷小开始到无穷大结束,即获取所有的元素列表,元素的排列顺序为分数从大到小。
使用 WITHSCORES 选项,可以返回元素的分数
192.168.98.70:6379> ZADD haicoder 100 Redis 50 Mongo 200 Mysql 10 SqlServer (integer) 4 192.168.98.70:6379> ZREVRANGEBYSCORE haicoder +inf -inf WITHSCORES 1) "Mysql" 2) "200" 3) "Redis" 4) "100" 5) "Mongo" 6) "50" 7) "SqlServer" 8) "10" 192.168.98.70:6379> DEL haicoder (integer) 1
我们首先,使用 ZADD 命令,同时向键为 haicoder 的集合插入元素 Redis,分数为 100,元素 Mongo,分数为 50,元素 Mysql,分数为 200,元素 SqlServer,分数为 10。
最后,我们使用 ZREVRANGEBYSCORE 命令,分数设置为从无穷小开始到无穷大结束,即获取所有的元素列表,同时加上 WITHSCORES 选项,返回列表每个元素的分数,可以看到元素的排列顺序为分数从大到小排序。
使用 LIMIT 选项,可以返回指定索引开始指定元素数目的元素
192.168.98.70:6379> ZADD haicoder 100 Redis 50 Mongo 200 Mysql 10 SqlServer (integer) 4 192.168.98.70:6379> ZREVRANGEBYSCORE haicoder +inf -inf 1) "Mysql" 2) "Redis" 3) "Mongo" 4) "SqlServer" 192.168.98.70:6379> ZREVRANGEBYSCORE haicoder +inf -inf limit 2 1 1) "Mongo" 192.168.98.70:6379> DEL haicoder (integer) 1
我们首先,使用 ZADD 命令,同时向键为 haicoder 的集合插入元素 Redis,分数为 100,元素 Mongo,数为 50,元素 Mysql,分数为 200,元素 SqlServer,分数为 10。
接着,使用 ZREVRANGEBYSCORE 命令,获取所有的元素列表。 最后,我们使用 ZREVRANGEBYSCORE 命令,获取从索引 2 开始的 1 个元素,返回了 Mongo。
所有选项组合,返回指定索引的指定元素数目的元素,且获取对应的分数
192.168.98.70:6379> ZADD haicoder 100 Redis 50 Mongo 200 Mysql 10 SqlServer (integer) 4 192.168.98.70:6379> ZREVRANGEBYSCORE haicoder 100 50 1) "Redis" 2) "Mongo" 192.168.98.70:6379> ZREVRANGEBYSCORE haicoder 100 50 WITHSCORES limit 1 1 1) "Mongo" 2) "50" 192.168.98.70:6379> DEL haicoder (integer) 1
我们首先,使用 ZADD 命令,同时向键为 haicoder 的集合插入元素 Redis,分数为 100,元素 Mongo,分数为 50,元素 Mysql,分数为 200,元素 SqlServer,分数为 10。
接着,我们使用 ZREVRANGEBYSCORE 命令,获取元素的分数在 50 到 100 之间的元素列表。
最后,我们使用 ZREVRANGEBYSCORE 命令,获取元素的分数在 50 到 100 之间索引从 1 开始返回 1 个元素的元素列表,并且打印出其对应的分数值。
Redis 的 ZREVRANGEBYSCORE 命令用于返回有序集 KEY 中, score 值介于 max 和 min 之间(默认包括等于 max 或 min )的所有的成员。有序集成员按 score 值递减(从大到小)的次序排列。Redis ZREVRANGEBYSCORE 命令语法:
192.168.98.70:6379> ZREVRANGEBYSCORE KEY max min [WITHSCORES] [LIMIT offset count]