其他分享
首页 > 其他分享> > 项目亮点之排行榜

项目亮点之排行榜

作者:互联网

排行榜

参考链接

数据库实现

order by关键字

最简单的实现方式,通常性能不会很好

ORDER BY 关键字可以使查询返回的「结果集」按照指定的列进行排序,可以按照某「一列」排序或者同时按照「多列」进行排序,排序的顺序可以是「升序」或者「降序」。

SELECT column_name,column_name
FROM table_name
ORDER BY column_name,column_name ASC|DESC;

窗口函数

窗口函数中的顺序函数,通常性能也不会很好

窗口函数 效果
ROW_NUMBER() 顺序排序
RANK() 并列排序,会跳过重复的序号,比如序号为1、1、3
DENSE_RANK() 并列排序,不会跳过重复的序号,比如序号为1、1、2

Redis实现

zset

value 是一个集合,且可以看出这个集合是有序的。集合中的每一个 member 都有一个 score,然后按照这个 score 进行降序排序。

拓展

好友范围排行榜&好友点赞

七日排行榜

对一段日期的排行榜做并集,得到一段日期的数据的总体排行榜数据;

对一段日期的排行榜做交集,得到一段日期的数据的总体排行榜数据(排除期间中断上榜的信息);

亿级排行榜

分治算法处理,将单个排行榜分为多个排行榜处理(桶),但落点并不均匀,设计算法解决马太效应(强者愈强,弱者愈弱)

非实时排行榜

利用定时任务,获取统计完的排行榜数据,将数据缓存至临时表(或缓存);当客户端调用获取排行榜接口时直接返回临时表(或缓存)数据。

使用redis的string做缓存,自定义key,value为json数据

标签:项目,member,排行榜,score,亮点,key,点赞,排序
来源: https://www.cnblogs.com/faetbwac/p/16508247.html