-
Notifications
You must be signed in to change notification settings - Fork 98
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
博客排行榜 #70
Comments
Welcome ! 排行榜的后端部分就靠你啦! #64 |
博客排行上,我们或许可以把收藏和评论的关联也加上,但是这样的话,评论加分肯定要做评选和过滤的,因为会有一些无意义的评论以及一些在评论区聊天的情况发生。当然,我们可以后面再去考虑评论过滤的功能😋。 |
嗯 |
我请求完成前端界面的部分 |
sure,排行榜部分我们目前准备做在首页上,大概这个位置: 做成右侧的一个观看的栏,之前有一部分代码,但是由于没有数据,就都被注释掉了。 之后我们会把排行榜单独做成一个版块,因为可以有很多种不同的排行榜,就像CSDN那样,所以会有一个单独的版块拿出来做。 写的过程中可以随时在交流群里和我们讨论,后端的接口就请 @Durancer 来和你对接一下噢。 排行榜这块目前来说应该比较简单,但是如果有什么问题也及时和我联系噢。 |
@mayday831 但其实咱们应该单独开一个issue🤣,毕竟前端和后端是两块,要不你再提一个issue吧,我会把当前这个issue引用到你提的新issue上 |
可以的 |
功能请求 —— The feature request
实现作者原力排行榜
博客热度排行榜,日、周、月排行榜
解决方案 —— Proposed solution
数据结构的设计:
在 redis 中建立一个 zset 类型的key,其中的每个 member 用 对应排行内容的 ID 充当
Redis根据操作分值数对库中的商品进行排序,并将操作 zset 分值记为热度值或原力值
通过获取时间戳,除以每日的单位 1000 * 60 * 60 * 24 得到一个 day key ,积累今日用户操作进行的分值累积
通过算法算出上周的 week key,对上周 day key 进行累积合并操作生成
得到的 day key 或 week key 将用来作为排行榜存入redis的 key 后置参数
创建key时,指定 TTL 为 40天,避免垃圾数据占用内存
通过合并操作,来实现周、月排行榜
用户相关操作使用 rabbitMQ 实现传递事件,在监听类中对涉及到的排行相关信息进行redis操作增加对应涉及的分值操作
各时间相关排行榜解决方案:
博客热度排行榜
分数使用用户对该博客的操作数量表示,浏览+1,点赞+3,转发+3,收藏+3,评论+3,热度
作者排行榜
该作者进行发布博客修改博客等活跃操作,或作者所创作博客被点赞,转发,收藏,评论等操作增加 3 原力值
方案优化 —— Optimization
对从redis数据获取来的 id 先进行统计,然后进行 批量查询 提高效率缓解数据库压力
The text was updated successfully, but these errors were encountered: