当前位置: 首页 > news >正文

【生产案例】点赞数和排行榜

实现点赞数和排行榜功能,通常涉及数据存储、点赞/取消点赞逻辑以及排行榜展示。以下是具体的实现步骤和技术选型:
1. 数据存储:
  • 数据库:
    使用关系型数据库(如MySQL, PostgreSQL) 存储博客文章、用户等基本信息。
  • Redis:
    使用Redis 的 set 数据结构来记录用户对文章的点赞状态。例如,使用文章ID作为key,用户ID作为value,存储到set 中,判断用户是否点赞过某篇文章。
  • 点赞计数:
    可以使用Redis 的 INCR 和 DECR 命令来原子地增加或减少文章的点赞数,或者直接在数据库中更新点赞数。 
2. 点赞/取消点赞逻辑:
  • 点赞: 当用户点击点赞按钮时,
    1. 检查Redis 中是否已存在该用户对该文章的记录。
    2. 如果不存在,则将用户ID添加到文章ID对应的Redis set 中,并在数据库中更新点赞数。
    3. 如果已存在,则不执行任何操作。
  • 取消点赞: 当用户点击取消点赞按钮时,
    1. 检查Redis 中是否存在该用户对该文章的记录。
    2. 如果存在,则将用户ID从文章ID对应的Redis set 中删除,并在数据库中更新点赞数。
    3. 如果不存在,则不执行任何操作。 
3. 排行榜实现:
  • Redis Zset:
    可以使用Redis 的 Zset 数据结构来实现排行榜。Zset 允许你根据score (点赞数) 对成员(文章ID) 进行排序,并提供获取前N名等功能。
  • 数据库查询:
    也可以在数据库中直接根据点赞数进行排序查询,然后获取前N名。
  • 实时性与性能:
    对于高并发场景,Redis 的 Zset 更适合实时性要求高的排行榜。如果点赞数更新不频繁,数据库查询也可以满足需求。 
技术选型建议:
  • 点赞状态:建议使用Redis 的 set 来存储点赞状态,可以快速判断用户是否已点赞。
  • 排行榜:优先考虑Redis 的 Zset 实现,可以利用其排序功能。如果数据量不大或者点赞更新不频繁,也可以考虑在数据库中直接查询。
补充说明:
  • 可以考虑使用缓存来提高排行榜的访问速度。
  • 可以加入分页功能来展示大量数据。
  • 需要考虑并发问题,例如使用分布式锁来避免多个用户同时点赞/取消点赞时出现数据不一致的情况。
http://www.sczhlp.com/news/8035/

相关文章:

  • 37.B站薪享宏福笔记——第十三章(2)自定义CRD
  • Android 安全编程:Kotlin 如何从语言层保障安全性
  • AI搜索及AI提问的学习
  • 稿定科技:多云架构下的 AI 存储挑战与 JuiceFS 实践
  • 在docker容器中构建镜像
  • 双指针 滑动窗口 经典问题 : 选择一个尽可能长的区间,使得区间中恰好包含 k 个 0,把这些 0 染成 1 得到最长1串
  • Prometheus源码专题【左扬精讲】—— 监控系统 Prometheus 3.4.0 源码解析:Discovery 动态服务发现机制——discovery/http/http.go
  • Lab10 mmap
  • 【IEEE出版丨电子科技大学主办】第四届电子信息技术国际学术会议(EIT 2025)
  • 【SPIE出版丨稳定EI检索】第五届智能交通系统与智慧城市国际学术会议(ITSSC 2025)
  • 10.封装 - hml
  • 产品画图工具整理
  • Java 生态中不可或缺的工具,其核心价值在于标准化和自动化。通过统一项目结构、简化依赖管理和构建流程,它让开发者更专注于代码逻辑而非环境设置,尤其适合团队协作和大型项目开发。就是Maven
  • 在一台电脑上同时使用多个 SSH 账号/密钥
  • Office 2007 打开文件后,看不到界面
  • Gitee 官方推荐,“超级管理系统”,全功能免费开源”,当你还在找企业后台框架时,一定不要错过这款拥有100k+ Stars的实力之选
  • 微算法科技(NASDAQ:MLGO)使用循环QSC和QKD的量子区块链架构,提高交易安全性和透明度
  • 基于 MATLAB 的双边滤波去图像云雾处理
  • IoTOS v1.6.8 爆款配置 | 流量池运营 | 物联卡短信
  • 抽象类VS接口:核心区别与实战选择
  • 完蛋,GitHub 70000+ star,我把你(AI)当朋友,你却要代替我,前端同学这下彻底蹦不住了,真的不留一点活路!!!
  • SM31700的btnBC按钮有用的后台
  • 【项目复盘】AI如何重塑千亿医药零售?与AI智能客服的跨行业思考
  • 找到啦,我们已上车,Github 27000+ star,研发团队必备开源工具项目,真丝滑!!!
  • 【CAPL】CAPL 的常用函数:时间、消息、诊断、字符串数组等
  • 光隔离探头:电子测量领域的革新力量
  • K8S权限认证
  • 题解:P3978 [TJOI2015] 概率论
  • 完蛋啦,爆火Github项目,用微信聊天记录打造专属AI数字分身,我都不敢相信!!
  • 64.资治通鉴-第一册