文章目录
一、有序集合 Zset
有序集合 Zset 与 普通集合 Set 类似,都是 没有重复元素的集合 ;
有序集合 Zset 中的 元素排序,是 根据 评分 进行排序,每个成员 都关联了一个 评分,在该 有序集合 中,根据 评分 由低到高 进行排序 ;
Zset 中的元素 是 不可重复的,但是 元素 关联 的 评分 是可以重复的,也就是说 存在 两个不同的元素 关联着 相同的 评分 ;
Zset 中的元素 是 有序 的,根据 排序的索引 或者 元素的评分 可以获取 指定范围 的 成员 ; 如 : 获取 中间元素 ;
二、查询操作
1、查询 Zset 所有数据
执行
zrange student 0 -1
命令,可以 从 Redis 中查询 student 键对应的 Zset 有序集合中的所有元素 ;
代码示例 :
127.0.0.1:6379> zadd student 60 Tom 72 Jerry 49 Jack 81 Bill
(integer) 4
127.0.0.1:6379> zrange student 0 -1
1) "Jack"
2) "Tom"
3) "Jerry"
4) "Bill"
127.0.0.1:6379>
2、查询 Zset 所有数据和评分
执行
zrange student 0 -1 withscores
命令,可以 从 Redis 中查询 student 键对应的 Zset 有序集合中的所有元素 和 评分 ;
代码示例 :
127.0.0.1:6379> zrange student 0 -1 withscores
1) "Jack"
2) "49"
3) "Tom"
4) "60"
5) "Jerry"
6) "72"
7) "Bill"
8) "81"
127.0.0.1:6379>
3、查询指定评分范围的 Zset 数据
执行
zrangebyscore student 20 70
zrangebyscore student 20 70 withscores
命令,可以 从 Redis 中查询 student 键对应的 Zset 有序集合中 20 ~ 70 分 之间的数据 ;
代码示例 :
127.0.0.1:6379> zrangebyscore student 20 70
1) "Jack"
2) "Tom"
127.0.0.1:6379> zrangebyscore student 20 70 withscores
1) "Jack"
2) "49"
3) "Tom"
4) "60"
127.0.0.1:6379>
4、查询指定评分范围的 Zset 数据并从大到小排序
执行
zrevrangebyscore student 70 20
zrevrangebyscore student 70 20 withscores
命令,可以 从 Redis 中查询 student 键对应的 Zset 有序集合中 20 ~ 70 分 之间的数据,并且从大到小排序 ;
代码示例 :
127.0.0.1:6379> zrevrangebyscore student 70 20
1) "Tom"
2) "Jack"
127.0.0.1:6379> zrevrangebyscore student 70 20 withscores
1) "Tom"
2) "60"
3) "Jack"
4) "49"
127.0.0.1:6379>
5、统计指定评分范围的 Zset 数据个数
执行
zcount student 20 70
命令,可以 统计 Zset 有序集合中 20 ~ 70 分 之间的数据个数
代码示例 :
127.0.0.1:6379> zrange student 0 -1 withscores
1) "Jack"
2) "49"
3) "Jerry"
4) "72"
5) "Bill"
6) "81"
127.0.0.1:6379> zcount student 20 70
(integer) 1
127.0.0.1:6379>
6、查询指定元素在 Zset 有序集合中的排名
执行
zrank student Jerry
命令,可以 查询 Zset 有序集合中 Jack 元素排名,从 0 开始排序 ;
代码示例 :
127.0.0.1:6379> zrange student 0 -1 withscores
1) "Jack"
2) "49"
3) "Jerry"
4) "72"
5) "Bill"
6) "81"
127.0.0.1:6379> zrank student Jerry
(integer) 1
127.0.0.1:6379>
127.0.0.1:6379> zrank student Bill
(integer) 2
127.0.0.1:6379>
三、增加操作
1、向 Redis 中插入 Zset 有序集合
执行
zadd student 60 Tom 72 Jerry 49 Jack 81 Bill
命令,可以 向 Redis 的 student 键 中 存储 Zset 数据,
- Tom 评分 60,
- Jerry 评分 72,
- Jack 评分 49,
- Bill 评分 81 ;
排序原则是 根据 评分 从小到大 进行排序 ;
如果按照 评分 从低到高 排列为 : Jack < Tom < Jerry < Bill ;
代码示例 :
127.0.0.1:6379> zadd student 60 Tom 72 Jerry 49 Jack 81 Bill
(integer) 4
127.0.0.1:6379> zrange student 0 -1
1) "Jack"
2) "Tom"
3) "Jerry"
4) "Bill"
127.0.0.1:6379>
四、删除操作
1、删除指定元素
执行
zrem student Tom
命令,可以 从 Zset 有序集合 中 删除 Tom 元素 ;
代码示例 :
127.0.0.1:6379> zrem student Tom
(integer) 1
127.0.0.1:6379> zrange student 0 -1 withscores
1) "Jack"
2) "49"
3) "Jerry"
4) "72"
5) "Bill"
6) "81"
127.0.0.1:6379>
五、修改操作
1、修改元素评分
执行
zincrby student 20 Tom
命令,可以 为 Zset 有序集合 中 的 Tom 元素 的评分 增加 20 ;
代码示例 :
127.0.0.1:6379> zincrby student 20 Tom
"80"
127.0.0.1:6379> zrange student 0 -1 withscores
1) "Jack"
2) "49"
3) "Jerry"
4) "72"
5) "Tom"
6) "80"
7) "Bill"
8) "81"
127.0.0.1:6379>
原文地址:https://blog.csdn.net/shulianghan/article/details/129106569
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。