redis妙用-zset类型

2020-10-22 10:13:34 浏览数 (1)

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

redis_zset_1.pngredis_zset_1.png
api

基本操作

命令

说明

ZADD key score element...

存储元素

ZREM key elementelement...

从集合中删除元素

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

代码语言:txt复制
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,然后取两天的并集。

redis_zset_2.pngredis_zset_2.png
热点新闻排行榜
redis_zset_3.pngredis_zset_3.png
代码语言:txt复制
# 将点击数作为score,没点一次进行加1
ZINCRBY hotnews::20190528 1 李可首位归化国脚

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

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

0 人点赞