版权声明: 转载请注明出处!本文采用 知识共享 署名-非商业性使用-禁止演绎 4.0 国际许可协议
前言
从上一篇学习了一个有序集合的 ZADD 命令开始,我们继续学习有序集合的命令,今天这几个命令就是查看有序集合中元素情况的,因为是有序集合,所以在查看的时候涉及到查看顺序,接下来我们一起来看一下。
这篇笔记中的3个命令分别是 ZRANGE 、 ZREVRANGE 、 ZCARD ,可以参考:
- 《Redis每日一练(21):LPUSH和LRANGE命令》 中的 LRANGE 命令
- 《Redis每日一练(28):SADD、SMEMBERS和SCARD命令》 中的 SCARD 命令
ZRANGE
- 最早出现版本:1.2.0
- 时间复杂度:O(log(N)+M) (N是有序集合中的元素个数,M是返回的元素个数)
- 命令参数:ZRANGE key start stop [WITHSCORES]
- 操作类型:sorted sets
- 官方文档
作用
这个命令我们在学习 ZADD 命令是简单使用过,就是查询有序集合中指定范围内的元素,这个范围包括指定的端点,同时支持负数,这些规则在 redis 中是通用的。
当 start 大于 stop 时,并不会报错,而是返回一个空的列表,当指定了 WITHSCORES 选项时,每个指定范围后的元素会紧跟着一个分数。
练习
向有序集合中添加多个元素,然后使用 ZRANGE 命令查看元素:
127.0.0.1:6379> DEL zset
(integer) 1
127.0.0.1:6379> ZADD zset 99 albert 98 bella 100 tom 90 lili
(integer) 4
127.0.0.1:6379> ZRANGE zset 0 -1
1) "lili"
2) "bella"
3) "albert"
4) "tom"
127.0.0.1:6379> ZRANGE zset 0 1
1) "lili"
2) "bella"
127.0.0.1:6379> ZRANGE zset 0 0
1) "lili"
127.0.0.1:6379> ZRANGE zset 4 3
(empty list or set)
127.0.0.1:6379> ZRANGE zset 0 -1 WITHSCORES
1) "lili"
2) "90"
3) "bella"
4) "98"
5) "albert"
6) "99"
7) "tom"
8) "100"
127.0.0.1:6379>
ZREVRANGE
- 最早出现版本:1.2.0
- 时间复杂度:O(log(N)+M) (N是有序集合中的元素个数,M是返回的元素个数)
- 命令参数:ZREVRANGE key start stop [WITHSCORES]
- 操作类型:sorted sets
- 官方文档
作用
查看指定有序集合中指定范围内元素,参数要求和作用与 ZRANGE 命令一致,唯一的不同是 ZRANG 命令查询的元素是按分数从小到大排列的,而 ZREVRANGE 命令查询的元素是按分数从大到小的顺序排列的。
练习
向有序集合中添加多个元素,然后使用 ZREVRANGE 命令查看元素,可以对比一下与 ZRANGE 命令的不同:
127.0.0.1:6379> DEL zset
(integer) 1
127.0.0.1:6379> ZADD zset 99 albert 98 bella 100 tom 90 lili
(integer) 4
127.0.0.1:6379> ZRANGE zset 0 -1
1) "lili"
2) "bella"
3) "albert"
4) "tom"
127.0.0.1:6379> ZREVRANGE zset 0 -1
1) "tom"
2) "albert"
3) "bella"
4) "lili"
127.0.0.1:6379> ZREVRANGE zset 0 0
1) "tom"
127.0.0.1:6379> ZREVRANGE zset -2 -1
1) "bella"
2) "lili"
127.0.0.1:6379> ZREVRANGE zset 0 -1 WITHSCORES
1) "tom"
2) "100"
3) "albert"
4) "99"
5) "bella"
6) "98"
7) "lili"
8) "90"
127.0.0.1:6379>
ZCARD
- 最早出现版本:1.2.0
- 时间复杂度:O(1)
- 命令参数:ZCARD key
- 操作类型:sorted sets
- 官方文档
作用
这个命令比较简单,直接返回有序集合中元素的个数(也叫集的势),当指定的键不存在时返回0,当指定的键不是有序集合时会给出错误信息。
练习
向有序集合中添加多个元素,然后使用 ZCARD 命令查看元素个数:
127.0.0.1:6379> DEL zset
(integer) 1
127.0.0.1:6379> ZADD zset 99 albert 98 bella 100 tom 90 lili
(integer) 4
127.0.0.1:6379> ZRANGE zset 0 -1
1) "lili"
2) "bella"
3) "albert"
4) "tom"
127.0.0.1:6379> ZCARD zset
(integer) 4
127.0.0.1:6379>
总结
- ZRANGE 命令可以获取有序集合中,将元素按照分数从小到大排序后,指定范围内的所有元素。
- ZREVRANGE 命令可以获取有序集合中,将元素按照分数从大到小排序后,指定范围内的所有元素。
- ZCARD 命令可以求有序集合中元素的个数,也叫集的势。
2020-1-5 12:19:37
最后修改时间:2020-01-12 22:50:11
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。