有序的set集合,根据每个值的分值来排序,分值相等根据element的ascii码排序。同样区分正数索引、负数索引。本节建议score有一定的业务含义,会适用于很多场景
zset

api

基本操作

命令 说明
ZADD key score element[…] 存储元素
ZREM key element[element…] 从集合中删除元素
ZSCORE key element 获取集合中元素的分值
ZINCRBY key {increment} element 对score增加{increment},element不存在则新增
ZCARD key 获取集合中元素的个数
ZRANGE key start stop 正序过去集合,score从start到stop
ZREVRANGE key start stop 倒叙过去集合,score从start到stop
1
2
3
4
5
6
7
127.0.0.1:6379> zadd whoisoldman 18 far 18 ally 20 jayden
(integer) 3
127.0.0.1:6379> ZRANGE whoisoldman 0 -1
1) "ally"
2) "far"
3) "jayden"
127.0.0.1:6379>

集合运算操作

命令 说明
ZINTERSTORE {resultKey} numkeys key [key…] 交集运算,保存到resultKey中
ZUNIONSTORE {resultKey} numkeys key [key…] 并集运算,保存到resultKey中

应用场景

统计运算排序

统计两天内的每款手机销售总量,并排序。将销售数量当作score,然后取两天的并集。
zset

热点新闻排行榜

zset

1
2
3
4
5
6
7
8
# 将点击数作为score,没点一次进行加1
ZINCRBY hotnews::20190528 1 李可首位归化国脚

# 展示排行,倒叙取10条,并携带score输出
ZREVRANGE hotnews::20190528 0 10 WITHSCORES

# 实现周榜、月榜,参照上一小节的统计运算
SUNIONSTORE union::20190527::201900602 hotnews::20190528 ... hotnews::201900602