赞
踩
一、业务描述
现有一排行榜业务,数据库中拥有百万级用户,中秋佳节将要来临,用户可以写一篇关于中秋的故事,故事可邀请好友点赞,也可以打赏该故事,现在要挑选出关于中秋话题相关的故事,根据用户故事的点赞数、获得的打赏数以及故事查看次数为依据,根据一定规则算出后在客户端展示前100的故事排行榜。
二、业务分析
分析业务得知,用户故事排行榜可不必实时刷新,比如5分钟或者是10分钟刷新一次,用户是没有多少感知的,如果涉及数据量太过庞大或者是业务计算复杂需要更多时间排行,完全可以明确的告知用户5分钟或者10分钟刷新一次排行榜,甚至是更久。面对这样的业务,不可能在用户请求的时候去计算排行,这样做服务器不仅响应慢,服务器还会消耗大量的资源,比如大量的逻辑计算导致服务器CPU爆满,内存消耗过大等问题。要想用户的请求能够很快的响应,在查询时这个排行榜就已经排好了。下面我介绍一种我在工作中所使用的一种方法,也许并不是最好的,但满足一般的业务还是没有任何问题的,对于超大的数据集,需要另觅方法。
三、方法介绍
合理使用Redis的有序集合。Redis是一种将数据放到内存中的数据库,面对排行榜这样的业务需求,找它是完全没有问题的。更值得拍手叫好的是,Redis的有序集合可以帮助我们实现排行榜,将多个维度的数据源取得之后,通过一定的规则计算出分值,把这些数据放入到Redis的有序集合中,那么排行结果自然而然的就出来了,取出排行数据后,在填充一些客户端展示需要的数据即可。要想实现每隔一分钟或是5分钟刷新一次,只需开启一个定时器,定时去调用排行计算逻辑。更多关于Redis的有序集合的命令,请参
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。