有一堆帖子(大概 100w 条数据左右),有一个点赞的字段。
实现上周热门帖子排行榜,排序的根据是该帖子在上周被点赞的数量来进行排行的。
同理,上月热门也是根据上月被点赞的数量来进行排行。
新的统计表
既然根据的是上周 /上月的数据来进行排序,那么可不可以新建一个表,专门记录每个帖子每周被点赞的数量?但是每月该怎么实现呢?而且这么做,好像数据量有点太大了。。。小肉鸡怕扛不住。
缓存
用 redis 去存?合理吗?
不知道各位大佬们,有没有比较好的解决方法分享一下?
后端小白一枚,还请各位多多指教。
1
ericls 2018-07-14 03:16:33 +08:00 via iPhone
怎么定义上周?
|
2
xmadao 2018-07-14 10:27:28 +08:00
又不是一直要刷新 一周一次 分批排序合起来就是了
|
4
siteshen 2018-07-14 17:28:49 +08:00
自然月很简单,使用 redis 的 sorted set 实现很方便。
点赞( for month ):zincrby popular:2018-07 1 {post_id} 热帖( for month ):zrevrangebyscore popular:2018-07 +inf -inf limit 0 20 自然周同理(假设今天属于本年的第 38 周,懒得计算了): 点赞( for month ):zincrby popular:2018-w38 1 {post_id} 热帖( for month ):zrevrangebyscore popular:2018-w38 +inf -inf limit 0 20 rolling 周的话复杂些,可以使用写入多次的方式实现。 |