微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

redis实时计算TopK的想法

想到这样的一个场景,你发了一个朋友圈,按照评论评论的字数排序输出,字数越多表示越想想和你唠嗑。

场景1,一个人只能发一个评论的情况

使用redis的zset,假设需要排名前50个人,也就是Top50

思路

topk = 50
wordNum = len(user_id's comment)
ZADD id wordNum user_id
count = ZCARD id
if (count > topk) {
	ZREMRANGEBYRANK 0, (topk - count)
}
ZRANGEBYscore id 0 -1 WITHscoreS 

场景2,一个人能发多个评论的情况

使用redis的zset,但是需要记录所有的用户,唉,内存怎么搞?
假设需要排名前50个人,也就是Top50

思路

topk = 50
wordNum = len(user_id's comment)
ZINCRBY id wordNum user_id
ZRANGEBYscore id -topk -1 WITHscoreS 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐