Redis 常用数据类型之 zset(有序集合)
Redis 常用数据类型之 zset(有序集合)
有序集合 zset(sorted-set)相关特性
- redis 有序集合 zset 与 无序 set 类型的一样,都是 string 类型的集合元素,且元素不允许重复。
- zset 的每个元素都会关联一个 double 类型的分数(score)。redis 就是通过分数来为集合中的成员进行从小到大的排序。
- 有序集合的成员是唯一的,但是对应的分数 (score)是可以重复的。
zset 相关命令
操作 |
命令 |
例子 |
说明 |
添加 |
zadd |
zadd key score1 name1 score2 name2 score3 name3 |
key 为集合名,score1 表示 分数(用于排序) ,name1 表示元素;对于已经存在的元素,重新执行 zadd 操作,会更新对应 score1 的值,也就分数值(会根据新的分数值进行排序) |
取 |
zscore |
zscore key name1 |
获取到 name1 的分数 |
获取成员数量 |
zcard |
zcard key |
|
删 |
zrem |
zrem key name1 name2 |
|
范围查寻(从小到大) |
zrange |
zrange key 0 -1 zrange key 0 -1 withscores |
注:withscores如果没有添加不会显示值; -1 表示最后一位 |
范围查寻(从大到小) |
zrevrange |
zrevrange key 0 -1 zrevrange key 0 -1 withscores |
同 zrange 一样,只是顺序反过来 |
按照范围删除 |
zremrangebyrank |
zremrangebyrank key 0 4 |
删除下标为0 到 4之前的元素 |
按照value删除 |
zremrangebyscore |
zremrangebyscore 80 90 |
将删除 分数在 80(包括) 到 90(包括) 之间的元素 |
根据分数显示元素 |
zrangebyscore |
zrangebyscore sort score1 score2(withscores)(limit a b) |
由低到高显示分数score1到score2之间的元素(带上分数显示)(显示a-b之间的元素) |
指定成员增加 |
zincrby |
zincrby key a b |
将元素b对应的分数加a,返回加完之后b对应的分数 |
返回分数之间的元素个数 |
zcount |
zcount key score1 score2 |
返回分数score1到分数score2之间的元素个数 |
详细操作
基础操作(zadd、zcrad、zcount)
127.0.0.1:6379> zadd books 49 java 79 springboot 80 python 50 php # 添加元素
(integer) 4
127.0.0.1:6379> zadd books 30 java2
(integer) 1
127.0.0.1:6379> zcard books # 查看数量
(integer) 5
127.0.0.1:6379> zcount books 0 3 # 根据分数显示指定的元素,有没有分数在 0 到 3 的数据,这里就返回 0
(integer) 0
127.0.0.1:6379> zcount books 0 70 # 返回分数在 0 到 70 之间的数据
(integer) 3
127.0.0.1:6379>
排序操作(zrange 、zrevrange )
127.0.0.1:6379>zrange books 0 -1 # 顺序查询集合中的成员
1) "java2"
2) "java"
3) "php"
4) "springboot"
5) "python"
127.0.0.1:6379> zrevrange books 0 -1 # 倒序查看集合中的成员
1) "python"
2) "springboot"
3) "php"
4) "java"
5) "java2"
127.0.0.1:6379>
根据分数显示元素(zrangebyscore)
这里有一个内置值 inf,表示无穷, -inf 表示负无穷, +inf 表示正无穷
127.0.0.1:6379> zrangebyscore books -inf +inf # 显示元素从大到小排序
1) "java2"
2) "java"
3) "php"
4) "springboot"
5) "python"
127.0.0.1:6379> zrangebyscore books -inf +inf withscores # 显示元素从大到小,并且附带成绩1) "java2"2) "30"3) "java"4) "49"5) "php"6) "50"7) "springboot"8) "79"9) "python"
10) "80"
127.0.0.1:6379> zrangebyscore books -inf 50 withscores # 显示元素 <= 50 的那部分
1) "java2"
2) "30"
3) "java"
4) "49"
5) "php"
6) "50"
127.0.0.1:6379>
删除操作(zrem、zremrangebyrank、zremrangebyscore)
127.0.0.1:6379> zrem books java # 删除指定元素
(integer) 1
127.0.0.1:6379> zrange books 0 -1
1) "java2"
2) "php"
3) "springboot"
4) "python"
127.0.0.1:6379> zremrangebyrank books 0 -1 # 根据数组下标删除指定的元素
(integer) 4
127.0.0.1:6379> zrange books 0 -1
(empty list or set)
127.0.0.1:6379>
127.0.0.1:6379> zadd mysort 10 key1 20 key2 30 key3 40 key4 # 重新添加集合元素
(integer) 4
127.0.0.1:6379> zadd mysort 10 key5 30 key6
(integer) 2
127.0.0.1:6379> zrange mysort 0 -1 # 查看集合中的元素
1) "key1"
2) "key5"
3) "key2"
4) "key3"
5) "key6"
6) "key4"
127.0.0.1:6379> zremrangebyrank mysort 0 2 # 根据数组的下标来删除元素
(integer) 3
127.0.0.1:6379> zrange mysort 0 -1
1) "key3"
2) "key6"
3) "key4"
127.0.0.1:6379> zrangebyscore mysort -inf +inf WITHSCORES
1) "key3"
2) "30"
3) "key6"
4) "30"
5) "key4"
6) "40"
127.0.0.1:6379> zremrangebyscore mysort 0 1 # 根据分数来删除,但是此时没有分数满足 0 到 1 删除的结果就为 0
(integer) 0
127.0.0.1:6379> zrange mysort 0 -1 # 再次查看
1) "key3"
2) "key6"
3) "key4"
127.0.0.1:6379> zremrangebyscore mysort 0 35 # 再次根据分数来删除
(integer) 2
127.0.0.1:6379> zrange mysort 0 -1
1) "key4"
127.0.0.1:6379>
Redis 常用数据类型之 zset(有序集合)相关推荐
- Redis五大数据类型(字符串对象(string)、列表对象(list)、哈希对象(hash)、无序集合(set)和Sorted Set数据类型(zset有序集合))
Redis五大数据类型 一.String(字符串)数据类型 1.SET/GET/APPEND/STRLEN 2.INCR/DECR/INCRBY/DECRBY 3.GETSET 4. SETEX 5. ...
- Redis(八):Zset有序集合数据类型详解
Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员. 不同的是每个元素都会关联一个double类型的分数.redis正是通过分数来为集合中的成员进行从小到大的排序. 有序 ...
- Redis Zset有序集合
Redis Zset有序集合 1.zadd 添加一个或多个值 并且区分SCORE 2.zrange 返回有序集合区间 3.zrangebyscore 通过分数score排名,从低到高 4.Zrevra ...
- Redis常用数据类型使用及基本知识
前言(基本知识) Redis背景 08年的时候有一个意大利西西里岛的小伙子,笔名antirez(http://invece.org/),创建了一个访客信息网站 LLOOGG.COM.这个网站是 ...
- redis常用数据类型的场景,你真的用对了么?
关注微信公众号"虾米聊吧",每天更新一篇技术文章,文章内容涵盖架构师成长必经之路应掌握的技术,一起学习,一起交流. redis常用数据类型的场景,你真的用对了么? redis常用数 ...
- Redis常用数据类型及使用场景
String(字符串) 常用命令 SET key value GET key GETRANGE key start end #返回[start, end]区间的字符串,key不存在时返回空字符串 MG ...
- redis中的order set 有序集合
redis中的order set 有序集合 命令 1 zadd key score1 value1 score2 value2 .. 添加元素 127.0.0.1:6379> zadd user ...
- Redis面试常问-- Redis常用数据类型
Redis常用数据类型 http://www.redis.cn/
- redis zset转set 反序列化失败_Redis只往zset有序集合添加不存在的数据:关键字索引查询构建+源码分析...
Redis的有序集合Sorted Set(zset),可以很方便地用来构建关键字索引表,可以很方便地实现支持超大规模并发的关键字组合条件查询. 比如有套博客系统,博客文章存放在 hash 类型 art ...
最新文章
- 在 Asp.NET MVC 中使用 SignalR 实现推送功能
- Java的知识点24——多线程技术理论——程序、进程、线程
- Python3 字符串与hex之间的相互转换
- mysql事务编号_Mysql事务
- qt中创建控件布局以及删除原有布局和控件
- 半径为r的均匀带电球体_一半径为R的均匀带电球体,其电荷的体密度为ρ.求(1)球外任一点的电势;(2)球表面上的电势;(3...
- 这些将在新一年改变你的风控内容
- linux系列的命令补充
- 孙鑫VC学习笔记:第十一讲 (三) 如何把元文件保存到文件当中
- bzoj千题计划152:bzoj3405: [Usaco2009 Open]Grazing2 移动牛棚
- python turtle输出坐标_如何在Python/turtle中使用坐标列表绘制形状
- dedecms(织梦)采集规则规则宝典
- 我们不用开浏览器也能上BBS——带你体验telnet的魅力(zz) (转载)
- html页面禁止竖屏,关于移动端页面强制竖屏的方法
- 沁恒蓝牙芯片CH57x系列学习与应用
- ecb里使用自定义快捷键切换窗口
- Ubuntu 装搜过输入法后桌面黑屏
- 数学会对计算机编程的关系
- L1-2 h0053. 游戏时间 (5 分)
- 对Zebra的一点思考(Think of Zebra)