点赞功能可以怎么实现?
一、背景
点赞功能在社交软件或者社区平台经常能够看到,比如,微信可以给朋友圈点赞、抖音可以给视频和评论点赞、编程导航可以给文章和评论点赞、面试鸭可以给题目和回答点赞。
此时,正在摸鱼的我,不禁对这个点赞功能感到好奇。
二、业务分析
1、点赞功能是什么?
用户看到自己喜欢的内容,通过点击按钮,来表示赞同或喜爱。
2、点赞功能有什么用?
为内容创作者提供了反馈,知道哪些内容受到用户的喜欢。
平台可以根据点赞数对内容进行排序,将受欢迎的内容显示在前面,提高用户的体验。
三、功能需求
1、点赞和取消点赞
同一个用户只能点赞一次,再次点击则取消点赞
2、显示点赞状态
如果当前用户已经点赞,则点赞按钮高亮显示
3、统计每篇文章的点赞数
文章的列表和详情页需要显示点赞数量
四、实现方案
方案一:业务表增加一个字段,用来储存点赞的用户id,使用JSON数组格式存储。
- 优点:实现简单,只要维护一个字段。 比如,用户1给A文章点赞了,只需要把用户1存储在字段里,取消点赞则移除掉,显示点赞状态只要判断当前用户id是否在数组里,点赞数就是数组的长度。
- 缺点:字段存储有上限。
方案二:业务表增加一个字段,用来记录总数,再增加一张关联表,记录点赞和业务的关系。
- 优点:支持存储较大的数据量。
- 缺点:需要同时维护一个字段和一张关系表。比如,用户1给A文章点赞了,需要往关系表插入一条数据,同时修改业务表的点赞数,取消点赞则需要删除关系和点赞数减一,显示点赞状态则要去关联表查询是否存在点赞关系,点赞数就是业务表的点赞数。
方案三:使用redis缓存加上缓存数据定时落库优化查询性能。(点赞业务查多写少,一般看十篇都不会给一篇点赞)
- 优点:提升了查询性能,支持更高的并发。
- 缺点:实现相对复杂,需要考虑数据的一致性。
方案四:加个业务类型,封装通用的点赞模块,可以给文章、评论等不同业务点赞。
- 优点:减少重复代码编写。
- 缺点:通用模块的并发量会更高,数据量会更大。
评论
问答助学
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
内容推荐
Day 29✅ 今天做了:Redis消息队列⏰ 明天计划:继续学消息队列
2
Day 17🧭行动:学习了Python最后一个知识点:异常处理🤓体会:Python 程序一旦发生异常,如果没有捕获处理,程序就会直接崩溃终止。使用"try-except"捕获异常,可以预先写好异常处理方案:比如打印友好提示、记录日志、释放资源,保证程序不会直接退出,还能继续运行。🧑💻代码:try:print("================================")# pri
2
Day1今天学习了java中if的使用
2
day 61今天来学校上课了,和教授谈了,可以接下RA工作,不过一周只能charge 10h, 工资很少,不过一个月600刀也勉强比没有好。今天的工作还没做完,最近在做知识库构造,Ui/UX上周就设计完,现在在做底座的建设今天也让Claude直接帮我把Neetcode150 题目+解题思路+代码给我整理了,我发现我真的只有找碎片化时间才能做题,我还不如先背先回忆(之前都做过)祝祖国母亲节日快乐,也
2
Day 1✅ 今天做了:⏰ 明天计划:📚 今日感悟:
0
