Zset(有序集合)

发布时间 2023-08-27 13:40:36作者: AnJiaYu

Zset(有序集合)

添加一个和添加多个值

127.0.0.1:6379> ZADD myset 1 one
(integer) 1
127.0.0.1:6379> ZADD myset 2 two 3 three
(integer) 2
127.0.0.1:6379> ZADD myset 3 three3
(integer) 1
127.0.0.1:6379> ZRANGE myset 0 -1
1) "one"
2) "two"
3) "three"
4) "three3"
127.0.0.1:6379> ZADD myset 5 five
(integer) 1
127.0.0.1:6379> ZRANGE myset 0 -1
1) "one"
2) "two"
3) "three"
4) "three3"
5) "five"
127.0.0.1:6379> ZADD myset 11 eleven
(integer) 1
127.0.0.1:6379> ZRANGE myset 0 -1
1) "one"
2) "two"
3) "three"
4) "three3"
5) "five"
6) "eleven"

排序如何实现

###########################################
首先添加三个数据
127.0.0.1:6379> ZADD salary 2500 xiaohong  
(integer) 1
127.0.0.1:6379> ZADD salary 5000 zhangsan
(integer) 1
127.0.0.1:6379> ZADD salary 500 fangzi
(integer) 1
127.0.0.1:6379>
###########################################
这里面需要三个参数 第一个是要排序的集合 第二个是最小值 使用-inf 代表负无穷 第三个是最大值 使用+inf代表无穷
负无穷到正无穷 就可以列出所有的数据排序 也就是由小到大
127.0.0.1:6379> ZRANGEBYSCORE salary -inf +inf
1) "fangzi"
2) "xiaohong"
3) "zhangsan"
127.0.0.1:6379>
###########################################
由大到小排序
127.0.0.1:6379> ZREVRANGE salary 0 -1
1) "zhangsan"
2) "xiaohong"
3) "fangzi"
127.0.0.1:6379>

###########################################
还可以在后面加上条件
127.0.0.1:6379> ZRANGEBYSCORE salary -inf +inf withscores
1) "fangzi"
2) "500"
3) "xiaohong"
4) "2500"
5) "zhangsan"
6) "5000"
127.0.0.1:6379>
###########################################
移除集合中的指定元素
127.0.0.1:6379> ZRANGE salary 0 -1
1) "fangzi"
2) "xiaohong"
3) "zhangsan"
127.0.0.1:6379> ZREM salary fangzi
(integer) 1
127.0.0.1:6379> ZRANGE salary  0 -1
1) "xiaohong"
2) "zhangsan"
127.0.0.1:6379>
###########################################
查看集合中有多少元素
127.0.0.1:6379> ZCARD salary
(integer) 2
127.0.0.1:6379>
###########################################
获取指定区间有多少个元素
127.0.0.1:6379> ZCOUNT salary 500 5000
(integer) 3
127.0.0.1:6379> ZCOUNT salary 500 2500
(integer) 2


应用场景 学生成绩 工资

设置消息权重 1 普通消息 2 重要消息

实现排行榜 比如播放量排行榜