版权声明: 转载请注明出处!本文采用 知识共享 署名-非商业性使用-禁止演绎 4.0 国际许可协议
前言
今天继续学习有序集合的命令,今天这几个命令都和有序集合中元素分数有关,查询分数,修改分数,按分数排名等等,下面我们来详细看一下使用方法。
这篇笔记中的3个命令分别是 ZSCORE 、 ZINCRBY 、 ZRANK ,可以参考:
- 《Redis每日一练(33):ZADD命令》 中的 ZADD 命令
ZSCORE
- 最早出现版本:1.2.0
- 时间复杂度:O(1)
- 命令参数:ZSCORE key member
- 操作类型:sorted sets
- 官方文档
作用
这个命令就是返回有序列表中指定元素的分数,当指定的键不存在或者元素不存在时会返回 nil。
练习
向有序集合中添加元素,然后使用 ZSCORE 命令查看元素的分数:
127.0.0.1:6379> DEL zset (integer) 1 127.0.0.1:6379> ZSCORE zset name (nil) 127.0.0.1:6379> ZADD zset 18 age (integer) 1 127.0.0.1:6379> ZSCORE zset age "18" 127.0.0.1:6379> ZSCORE zset name (nil) 127.0.0.1:6379>
复制
ZINCRBY
- 最早出现版本:1.2.0
- 时间复杂度:O(log(N)) (N是有序集合中的元素个数)
- 命令参数:ZINCRBY key increment member
- 操作类型:sorted sets
- 官方文档
作用
增加有序列表中指定元素的分数,分数可以指定为负数,这时会减少元素原来的分数。
当指定的元素不存在时,会使用参数中 increment 的值作为分数,member 作为元素来增加一个元素,当指定的键也不存在时,会创建一个以指定键为名字的有序集合,然后增加一个值为 member ,分数为 increment 的元素。
当指定的键不是有序列表的类型,会给出报错信息,正常操作是会返回修改后的分数。
练习
试着对非有序集合操作查看报错信息:
127.0.0.1:6379> SET name albert OK 127.0.0.1:6379> ZINCRBY name 1 age (error) WRONGTYPE Operation against a key holding the wrong kind of value 127.0.0.1:6379>
复制
操作不存在的有序集合和键,查看一下默认添加的情况,接着再修改分数:
127.0.0.1:6379> DEL zset (integer) 1 127.0.0.1:6379> ZINCRBY zset 100 albert "100" 127.0.0.1:6379> ZINCRBY zset 99 bells "99" 127.0.0.1:6379> ZINCRBY zset 90 tom "90" 127.0.0.1:6379> ZINCRBY zset 5 tom "95" 127.0.0.1:6379> ZINCRBY zset -1 tom "94" 127.0.0.1:6379> ZRANGE zset 0 -1 WITHSCORES 1) "tom" 2) "94" 3) "bells" 4) "99" 5) "albert" 6) "100" 127.0.0.1:6379>
复制
ZRANK
- 最早出现版本:2.0.0
- 时间复杂度:O(log(N)) (N是有序集合中的元素个数)
- 命令参数:ZRANK key member
- 操作类型:sorted sets
- 官方文档
作用
返回有序集合中元素的排名或者叫索引,顺序是从按照分数从小到大排列的,如果元素存在返回排名,否则返回 nil 。
排名是从0开始的,其实叫做索引更合适。
练习
向有序集合中添加多个元素,然后使用 ZRANK 命令查看元素排名:
127.0.0.1:6379> DEL zset (integer) 1 127.0.0.1:6379> ZADD zset 100 albert 99 bella 92 tom (integer) 3 127.0.0.1:6379> ZADD zset 98 boby (integer) 1 127.0.0.1:6379> ZRANGE zset 0 -1 1) "tom" 2) "boby" 3) "bella" 4) "albert" 127.0.0.1:6379> ZRANGE zset 0 -1 WITHSCORES 1) "tom" 2) "92" 3) "boby" 4) "98" 5) "bella" 6) "99" 7) "albert" 8) "100" 127.0.0.1:6379> ZRANK zset boby (integer) 1 127.0.0.1:6379> ZRANK zset bella (integer) 2 127.0.0.1:6379> ZRANK zset abz (nil) 127.0.0.1:6379>
复制
总结
- ZSCORE 命令可以获取有序集合中指定元素的分数,若指定的元素不存在返回 nil。
- ZINCRBY 命令可以增加有序集合中指定元素的分数,当指定的分数为负数时相当于减少分数。
- ZRANK 命令可以查询有序集合中指定元素的排名,如果指定的元素不存在返回nil。
2020-1-10 22:50:36
最后修改时间:2020-01-12 22:50:29
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
国产非关系型数据库 Eloqkv 初体验
JiekeXu
133次阅读
2025-04-10 23:51:35
融合Redis缓存的PostgreSQL高可用架构
梧桐
90次阅读
2025-04-08 06:35:40
Redis概要
听溪
38次阅读
2025-04-11 10:23:10
安装与配置Redis
鲁鲁
34次阅读
2025-04-11 10:26:10
Redis数据库——Cluster集群模式
编程Cookbook
30次阅读
2025-04-16 15:34:44
使用Jedis访问Redis数据库
怀念和想念
28次阅读
2025-04-11 15:08:30
Redis geo 实战:“附近的人”实现,打造社交的新维度
老王两点中
27次阅读
2025-04-11 09:02:30
Redis改协议内幕曝光!核心开发者亲述被“踢出局”,外部贡献者几乎全跑光了!
老鱼笔记
25次阅读
2025-04-17 10:41:56
Redis提供的持久化机制
luyingjun
25次阅读
2025-04-11 15:11:05
Redis
鲁鲁
23次阅读
2025-04-07 20:14:35
TA的专栏
我与数据库相爱相杀的日子
收录63篇内容
热门文章
Mysql中Blob类型字段的插入、查看、截取和拼接
2019-11-28 12352浏览
Redis每日一练(26):BLPOP和BRPOP命令
2019-12-28 6881浏览
Redis每日一练(22):LPOP、RPUSH和RPOP命令
2019-12-23 6259浏览
MySQL数据库导入、导出、复制表、重命名表
2019-11-30 5598浏览
MySQL中全局变量、会话变量、用户变量和局部变量的区别
2019-12-07 5592浏览
最新文章
Redis每日一练(37):ZREVRANGEBYLEX、ZRANGEBYSCORE和ZREVRANGEBYSCORE命令
2020-02-04 4212浏览
Redis每日一练(36):ZREVRANK、ZREM和ZRANGEBYLEX命令
2020-01-14 2421浏览
Redis每日一练(34):ZRANGE、ZREVRANGE和ZCARD命令
2020-01-08 5002浏览
Redis每日一练(33):ZADD命令
2020-01-05 2578浏览
Redis每日一练(32):SDIFFSTORE、SINTERSTORE和SUNIONSTORE命令
2020-01-03 899浏览
目录