redis--015

业务需求

  1. 点赞 / 取消点赞互斥:同一个用户对同一篇博客只能点赞 1 次;再次点击就取消点赞。
  2. 前端高亮控制 :后端返回isLike字段,前端根据这个字段控制点赞按钮是否高亮。

⚠注意:isLike不存入数据库 ,只是返回给前端的临时标记,代表当前登录用户有没有给这篇博文点过赞,不同用户访问同一篇博客,这个值是不一样的。

Redis 选型:Set 集合

  • key 设计:blog:like:博文id
  • Set 里面存储点赞用户的 id
  • Set 天然去重:同一个用户 id 无法重复存入集合,刚好满足一人只能点一次赞。

完整实现步骤

  1. 实体类改造 在 Blog 实体增加临时字段isLike,仅用于向前端返回状态,不映射数据库表
  2. 点赞接口业务逻辑
  • 获取当前登录用户 ID、被点赞博客 ID
  • Redis 中查询该博客对应的 Set 集合,判断用户 ID 是否存在
    • 不存在(未点赞):把用户 id 加入 Set 集合;数据库点赞数量 + 1
    • 已存在(已点赞):把用户 id 从 Set 移除;数据库点赞数量 - 1
  1. 根据 id 查询单篇博客 查询博客数据库记录之后,额外去 Redis 判断:当前登录用户 id 是否在该博文的点赞 Set 集合里
  • 如果存在 → isLike=true
  • 如果不存在 → isLike=false 把该字段填充到 Blog 对象返回前端。
  1. 分页查询博客列表 分页拿到一批 Blog 数据之后,遍历每一条博文 ,每条都去 Redis 判断当前用户是否点赞过,给每一条记录设置isLike,再返回前端。
相关推荐
迷茫的大专生5 小时前
高可用总结
redis·mysql·nginx·高可用
辉灰笔记7 小时前
Redis6.0.10升级迁移至Redis7.4.6(修复CVE‑2025‑49844,业务无需重启)
redis·redis7·漏洞修复·数据库迁移·redis平滑升级·cve-2025-49844
sdm0704279 小时前
Linux 中安装 Redis 5
redis
草莓熊Lotso9 小时前
【Redis 进阶】主从复制深度解析:从配置落地到 PSYNC 同步原理
linux·开发语言·网络·数据库·redis·缓存·php
灯澜忆梦12 小时前
【Redis中间件】#2 | 基础数据类型语法
redis·后端
天天喝旺仔12 小时前
深入理解 JWT:从 Token 结构、签名机制到前后端鉴权实战
redis·安全·spring·微服务·https
一只小李郁vickie13 小时前
Redis 集群部署手册(3主3从)
运维·redis
Gl�ria1 天前
Redis 高可用架构对比
数据库·redis
Zenova EdgeOS1 天前
Python 工业边缘 redis-py 异步实战
开发语言·redis·python