Redis的各种数据类型实践-ZSet

2020-09-24 10:34:05 浏览数 (1)

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

0 人点赞