视频点赞功能以及记录观看次数的设计

最近博主参与了一个需求,类似于抖音小视频。本人独立负责这个需求中的点赞功能、记录视频观看记录。因为是独自负责的,从0到1开发,历时三天开发完成。开发过程中感悟良多,对此决定记录下。

首先是针对该功能的技术方案。楼主想了三种方案:

方案1:

强依赖于redis,将点赞数,点赞的记录、观看数实时存储在redis,同时创建一个set集合,维护点赞数的key和点赞记录的key。然后定时任务定时的将set集合的key的数据持久化到mysql。

方案2:

使用redis的incr、decr命令来记录点赞和取消点赞的操作的点赞数。并且redis中存储每个用户的点赞记录。将点赞操作和记录观看数的操作做出异步的任务。将异步任务提交到线程池中,然后异步任务将点赞持久化到mysql。

方案3:

使用redis的incr、decr命令来记录点赞和取消点赞的操作的点赞数。并且redis中存储每个用户的点赞记录。然后,使用MQ将点赞持久化到mysql。

方案 方案1   方案2   方案3
优点     数据准确性较差 实时/高效 实时/高效/能保证落库准确性
缺点 需考虑定时任务的时间设置,比较麻烦/缓存一致性问题 异步任务存在消费顺序问题/缓存一致性问题 使用mq需考虑消费失败问题/缓存一致性
原文地址:https://www.cnblogs.com/LcMiho/p/11734524.html