zset是有序的set集合,通过传入的分值进行排序
image
ZSet常用操作
代码语言:javascript复制ZADD key score member [[score member]…]//往有序集合key中加入带分值元素
ZREM key member [member …] //从有序集合key中删除元素
ZSCORE key member //返回有序集合key中元素member的分值
ZINCRBY key increment member//为有序集合key中元素member的分值加上increment
ZCARD key//返回有序集合key中元素个数
ZRANGE key start stop [WITHSCORES]//正序获取有序集合key从start下标到stop下标的元素
ZREVRANGE key start stop [WITHSCORES]//倒序获取有序集合key从start下标到stop下标的元素
Zset集合操作
代码语言:javascript复制ZUNIONSTORE destkey numkeys key [key ...] //并集计算
ZINTERSTORE destkey numkeys key [key …]//交集计算
应用场景
我们都知道微博热点,新闻热榜,投票排行榜等都有一个排名的概念,如下图百度热榜,展示的是实时的点击量比较高的新闻(假设这些新闻的ID为1001-1010),每个新闻都有一个热点值,一般按点击量,1001这个新闻热点是484W,1002这个是467W,实时的,可能等会再看就不一样了,那么我们看下用Redis咋实现。
image
1)点击新闻
每次有人点击这个新闻,那么久ius给他的分值加1
ZINCRBY hotNews:20200722 1 1001 //新闻ID为1001的新闻分值加一 2)展示当日排行前十
取集合中的前10个元素
ZREVRANGE hotNews:20200722 0 10 WITHSCORES 3)七日热点榜单计算
ZUNIONSTORE hotNews:20200715-20200721 7 hotNews:20200715 hotNews:20200716... hotNews:20200721 4)展示七日排行前十
ZREVRANGE hotNews:20190813-20190819 0 10 WITHSCORES