Redis五大数据类型——Zset(有序集合)

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
原文地址:https://www.cnblogs.com/liuhuan086/p/13581911.html