Redis五大数据类型——Zset(有序集合)
在set的基础上,增加了一个值,例如:
- set的用法是,set k1 v1,
- 而zset则是,zset k1 score1 v1,而这里的score就是用来排序
总结就是,新增字段的时候加一个标志
ZADD key [NX|XX] [CH] [INCR] score member [score member ...]
127.0.0.1:6379> ZADD zset 1 v1
(integer) 1
127.0.0.1:6379> ZADD zset 2 v2 3 v3
(integer) 2
127.0.0.1:6379> ZRANGE zset 0 -1 # ZRANGE key start stop [WITHSCORES]
1) "v1" # 查看指定的key中,start到stop这个闭区间的所有值
2) "v2"
3) "v3"
127.0.0.1:6379> ZADD zset 0 v0 # 插入一个0
(integer) 1
127.0.0.1:6379> ZRANGE zset 0 -1 # 可以看到,0对应的值排在了第一位
1) "v0"
2) "v1"
3) "v2"
4) "v3"
# ===========
# ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
127.0.0.1:6379> ZRANGEBYSCORE zset 1 2 # 指定范围内的所有值
1) "v1"
2) "v2"
127.0.0.1:6379> ZRANGEBYSCORE zset -inf +inf # 负无穷到正无穷
1) "v0"
2) "v1"
3) "v2"
4) "v3"
127.0.0.1:6379> ZRANGEBYSCORE zset -inf +inf withscores # 指定区间的值,并且打印范围内具体的值
1) "v0"
2) "0"
3) "v1"
4) "1"
5) "v2"
6) "2"
7) "v3"
8) "3"
# ===========
# ZREM key member [member ...]
127.0.0.1:6379> zadd zset 10 v1 30 v3 80 v4
(integer) 3
127.0.0.1:6379> ZREM zset v3
(integer) 1
127.0.0.1:6379> ZRANGE zset 0 -1
1) "v1"
2) "v4"
127.0.0.1:6379> ZRANGE zset 0 -1 withscores # 打印具体的"score"
1) "v1"
2) "10"
3) "v4"
4) "80"
127.0.0.1:6379> ZCARD zset # 查看zset中集合的个数
(integer) 2
127.0.0.1:6379> ZREVRANGE zset 0 -1 # 以降序查看指定区间的元素
1) "v4"
2) "v1"
# ===========
127.0.0.1:6379> ZADD zset 10 v1 20 v2 30 v3
(integer) 3
127.0.0.1:6379> ZCOUNT zset 10 30 # 获取指定闭区间的元素的数量
(integer) 3
其余的一些API和函数,可以通过redis官网进行查看。
案例思路:
-
和set相比,zset是有序,多了排序
-
top N
-
存储班级成绩,微博热搜,积分排名等
将积分等加入zset,定时(比如每分钟)刷新zset
-
-
带权重判断:
- 普通事件:标志为1
- 重要事件:标志为2
- 紧急事件:标志为3