点赞功能是如何设计的

背景

点赞功能通常出现在各种社交平台、内容分享平台或应用中,其背景主要基于以下几个方面:

  1. 用户参与和互动:点赞功能为用户提供了一种简单直观的方式来表达对内容的喜爱、认可或支持,促进用户之间的互动和参与。
  2. 内容评价和筛选:通过点赞数量,可以在一定程度上反映出内容的受欢迎程度,帮助其他用户快速筛选出优质或热门的内容。
  3. 社交反馈和激励:对于内容创作者来说,收到点赞是一种积极的反馈,能够激励他们创作更多优质的内容。
  4. 数据统计和分析:点赞数据可以被收集和分析,为平台了解用户兴趣、优化内容推荐、调整运营策略等提供依据。

实现

我们需要添加点赞记录表,保存每次点赞的记录,表中的设计有用户id,被点赞的业务id,被点赞的业务类型等,点赞的主要流程就是,首先判断是点赞还是取消点赞,如果是点赞的话,会先判断该点赞记录是否存在,如果存在说明已经点赞了直接结束,如果不存在,在点赞记录表中新增一条点赞记录,然后统计该业务总的点赞量,再调用异步消息发送到RabbitMQ队列中,对应的其他业务模块监听MQ队列中的消息,然后更新数据库中的点赞数量。

以上的操作是直接进行数据库的操作,效率较低,如果是高并发的话就会导致数据库的瘫痪,所以我们引入了Redis,可以使用 Redis 来存储点赞数据。通过 Redis 的高性能特点,在查询用户点赞过的业务 id 时,直接从 Redis 中进行操作,能够大幅提高查询效率,减轻数据库的负担。

再通过配置定时任务定期读取Redis中的点赞数量并通过MQ发送消息,实现数据的一部更新和同步,为了保障定时任务的正常运行和管理,我们可以在xxl-job管理界面进行执行器和任务的配置,确保定时任务的正常运行和管理

此次点赞的逻辑就变成了,确认是点赞之后,查询点赞记录缓存判断点赞记录是否存在,如果存在结束,不存在就在点赞记录缓存中新增点赞记录,然后统计业务点赞数量,放入点赞数量缓存中,然后写一个定时任务定期的从点赞缓存中定期读取数据,发往MQ当中,其他模块监听MQ队列中的消息更新点赞数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值