Skip to content
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

Closed
Durancer opened this issue Sep 26, 2022 · 7 comments · Fixed by #73
Closed

博客排行榜 #70

Durancer opened this issue Sep 26, 2022 · 7 comments · Fixed by #73
Assignees
Labels
enhancement New feature or request server This issue about server —— 跟服务端有关的问题

Comments

@Durancer
Copy link
Contributor

Durancer commented Sep 26, 2022

功能请求 —— The feature request

实现作者原力排行榜
博客热度排行榜,日、周、月排行榜

解决方案 —— Proposed solution

数据结构的设计:

        _数据库设计_

在 redis 中建立一个 zset 类型的key,其中的每个 member 用 对应排行内容的 ID 充当
Redis根据操作分值数对库中的商品进行排序,并将操作 zset 分值记为热度值或原力值

        _redis key生成方案_

通过获取时间戳,除以每日的单位 1000 * 60 * 60 * 24 得到一个 day key ,积累今日用户操作进行的分值累积
通过算法算出上周的 week key,对上周 day key 进行累积合并操作生成
得到的 day keyweek key 将用来作为排行榜存入redis的 key 后置参数
创建key时,指定 TTL 为 40天,避免垃圾数据占用内存
通过合并操作,来实现周、月排行榜

        _数据生成策略_

用户相关操作使用 rabbitMQ 实现传递事件,在监听类中对涉及到的排行相关信息进行redis操作增加对应涉及的分值操作
时间相关排行榜解决方案:

博客热度排行榜
分数使用用户对该博客的操作数量表示,浏览+1,点赞+3,转发+3,收藏+3,评论+3,热度

作者排行榜
该作者进行发布博客修改博客等活跃操作,或作者所创作博客被点赞,转发,收藏,评论等操作增加 3 原力值

方案优化 —— Optimization

对从redis数据获取来的 id 先进行统计,然后进行 批量查询 提高效率缓解数据库压力

@stick-i stick-i added enhancement New feature or request server This issue about server —— 跟服务端有关的问题 labels Sep 26, 2022
@stick-i
Copy link
Owner

stick-i commented Sep 26, 2022

Welcome ! 排行榜的后端部分就靠你啦! #64

@stick-i
Copy link
Owner

stick-i commented Sep 28, 2022

博客排行上,我们或许可以把收藏和评论的关联也加上,但是这样的话,评论加分肯定要做评选和过滤的,因为会有一些无意义的评论以及一些在评论区聊天的情况发生。当然,我们可以后面再去考虑评论过滤的功能😋。

@Durancer
Copy link
Contributor Author

博客排行上,我们或许可以把收藏和评论的关联也加上,但是这样的话,评论加分肯定要做评选和过滤的,因为会有一些无意义的评论以及一些在评论区聊天的情况发生。当然,我们可以后面再去考虑评论过滤的功能😋。

@mayday831
Copy link

我请求完成前端界面的部分

@stick-i
Copy link
Owner

stick-i commented Oct 8, 2022

我请求完成前端界面的部分

sure,排行榜部分我们目前准备做在首页上,大概这个位置:

image

做成右侧的一个观看的栏,之前有一部分代码,但是由于没有数据,就都被注释掉了。

之后我们会把排行榜单独做成一个版块,因为可以有很多种不同的排行榜,就像CSDN那样,所以会有一个单独的版块拿出来做。

写的过程中可以随时在交流群里和我们讨论,后端的接口就请 @Durancer 来和你对接一下噢。

排行榜这块目前来说应该比较简单,但是如果有什么问题也及时和我联系噢。

@stick-i
Copy link
Owner

stick-i commented Oct 8, 2022

@mayday831 但其实咱们应该单独开一个issue🤣,毕竟前端和后端是两块,要不你再提一个issue吧,我会把当前这个issue引用到你提的新issue上

@mayday831
Copy link

@mayday831 但其实咱们应该单独开一个issue🤣,毕竟前端和后端是两块,要不你再提一个issue吧,我会把当前这个issue引用到你提的新issue上

可以的

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request server This issue about server —— 跟服务端有关的问题
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants