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,再返回前端。
相关推荐
hweiyu001 小时前
Redis命令:HRANDFIELD
redis·缓存
jyOverQ1 小时前
Redis 持久化怎么做?RDB、AOF 与混合持久化
数据库·redis
于指尖飞舞1 小时前
mysql和redis面试题总结
数据库·redis·mysql
要开心吖ZSH2 小时前
系统并发与 QPS 上限:从 200 个线程到每秒几万请求
redis·mysql·tomcat·并发·连接池·qps
ly768917 小时前
Redis 大 Key 与热点 Key 生产治理:发现、拆分、限流与本地缓存的组合策略
redis·限流·本地缓存·大key·热点key
ShineWinsu20 小时前
对于Redis:AOF持久化的解析
linux·数据库·redis·缓存·面试·持久化·aof
仍然.20 小时前
Redis---集群
数据库·redis·缓存
hweiyu0021 小时前
Redis命令:HSCAN
redis·缓存
ly76891 天前
Redis 分布式锁的边界条件:Redlock 争议、锁续期与客户端崩溃后的互斥失效
数据库·redis·分布式·分布式锁·watchdog·redlock