点赞功能可以怎么实现?
一、背景
点赞功能在社交软件或者社区平台经常能够看到,比如,微信可以给朋友圈点赞、抖音可以给视频和评论点赞、编程导航可以给文章和评论点赞、面试鸭可以给题目和回答点赞。
此时,正在摸鱼的我,不禁对这个点赞功能感到好奇。
二、业务分析
1、点赞功能是什么?
用户看到自己喜欢的内容,通过点击按钮,来表示赞同或喜爱。
2、点赞功能有什么用?
为内容创作者提供了反馈,知道哪些内容受到用户的喜欢。
平台可以根据点赞数对内容进行排序,将受欢迎的内容显示在前面,提高用户的体验。
三、功能需求
1、点赞和取消点赞
同一个用户只能点赞一次,再次点击则取消点赞
2、显示点赞状态
如果当前用户已经点赞,则点赞按钮高亮显示
3、统计每篇文章的点赞数
文章的列表和详情页需要显示点赞数量
四、实现方案
方案一:业务表增加一个字段,用来储存点赞的用户id,使用JSON数组格式存储。
- 优点:实现简单,只要维护一个字段。 比如,用户1给A文章点赞了,只需要把用户1存储在字段里,取消点赞则移除掉,显示点赞状态只要判断当前用户id是否在数组里,点赞数就是数组的长度。
- 缺点:字段存储有上限。
方案二:业务表增加一个字段,用来记录总数,再增加一张关联表,记录点赞和业务的关系。
- 优点:支持存储较大的数据量。
- 缺点:需要同时维护一个字段和一张关系表。比如,用户1给A文章点赞了,需要往关系表插入一条数据,同时修改业务表的点赞数,取消点赞则需要删除关系和点赞数减一,显示点赞状态则要去关联表查询是否存在点赞关系,点赞数就是业务表的点赞数。
方案三:使用redis缓存加上缓存数据定时落库优化查询性能。(点赞业务查多写少,一般看十篇都不会给一篇点赞)
- 优点:提升了查询性能,支持更高的并发。
- 缺点:实现相对复杂,需要考虑数据的一致性。
方案四:加个业务类型,封装通用的点赞模块,可以给文章、评论等不同业务点赞。
- 优点:减少重复代码编写。
- 缺点:通用模块的并发量会更高,数据量会更大。
评论
问答助学
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
内容推荐
🚩JavaD131、抽象类、继承、多态、接口、内部类,单独每一章节能懂,综合后就似懂非懂2、每一章节重复看视频,还是懂,做综合题,这一遍刷题是对的,再接着刷题是错的。3、死板的知识适合我,灵活的不适合。4、五大山头压着都懵圈了,看来还要多花时间在这五大山头
3
Day 13✅ 今天做了:Vue表单搜索, 搜索栏布局⏰ 明天计划:继续学前端
2
ARTS 0913: 双栈互补实现队列、CIDR 聚合化解路由膨胀与 AI 作弊串通绝非偶然 Bug
4
今天学了Python基础之:①数据类型和变量:五大数据类型以及变量常量②字符串与编码:字符编码以及Python中的字符串、编解码、格式化
1
day41今天自己修改了一下简历,用作投AI应用开发岗位,还不是很完善,先用老鱼简历做一个简单的。后年用AI优化了一下。今天主要是对AI超级智能体的总结还有简历优化,后续继续学新项目,我觉得写项目是学知识的最佳途径,相比于死板板的理论,实践起来,记忆更佳。但是基础的还是要看,不然跟着写项目都写不明白。算法一题,Java基础。用友有一个笔试邀约,9月第一个笔试。其他的投完简历的都还没回信,科大讯飞的
0
