Redis ZREVRANGEBYSCORE命令

Redis ZREVRANGEBYSCORE命令教程

Redis 的 ZREVRANGEBYSCORE 命令用于返回 有序集 KEY 中, score 值介于 max 和 min 之间(默认包括等于 max 或 min )的所有的成员。有序集成员按 score 值递减(从大到小)的次序排列。

具有相同 score 值的成员按字典序的逆序排列。除了成员按 score 值递减的次序排列这一点外,ZREVRANGEBYSCORE 命令的其他方面和 ZRANGEBYSCORE 命令一样。

Redis ZREVRANGEBYSCORE命令详解

语法

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存在

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命令教程

Redis 的 ZREVRANGEBYSCORE 命令用于返回有序集 KEY 中, score 值介于 max 和 min 之间(默认包括等于 max 或 min )的所有的成员。有序集成员按 score 值递减(从大到小)的次序排列。Redis ZREVRANGEBYSCORE 命令语法:

192.168.98.70:6379> ZREVRANGEBYSCORE KEY max min [WITHSCORES] [LIMIT offset count]