写在前面
本着学习的目的,我们来了解一下B站的点赞功能纠结是怎么做的?或者说我们应该如果实现一个点赞功能?
当然本人不是b站员工,也没有参与过b站的任何活动,所以我们就用自己的想法,如果是我们,怎么去实现日活过亿的app的点赞功能。
1. 需求分析
我们先明确一下需求,这个点赞功能最主要影响两点:
观众与点赞的关系
,也就是观众有没有对这个视频点过赞。直观影响是点赞按钮的样式。视频与点赞的关系
,也就是这个视频有多少点赞。影响了这个视频的推荐程度。
明确了我们的需求之后,我们再来思考。如何从上亿用户中找到这个人是否看过这个视频?难道进行 io 吗?这显然是不行的!
2. 技术方案研究
2.1 观众与点赞的关系的实现
2.1.1 思路
既然直接io不行,那当然是上缓存啦!那么我们如何设置这个缓存的key呢?
我的想法是:维护一个用户的一个视频的点赞队列,其实对于b站来说,一个视频封顶就200w的点赞数,而b站的用户大多喜欢白嫖。
所以 这个 key可以这样设计