Skip to main content
☘️ Septvean's Documents
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

Redis 经典问题

Redis 除了三大缓存问题,还有哪些常见问题?

按 开发问题 / 运维问题 / 架构问题 分类。

一、开发侧常见问题(非常爱问)

1️⃣ 缓存一致性问题(🔥 必考)

问题

  • Redis 和数据库数据不一致
  • 更新顺序错误导致脏数据

典型场景

更新 DB 成功
更新 Redis 失败
-> 缓存是旧值

常见方案

方案 说明
先删缓存再写 DB ❌ 并发下可能回写旧值
先写 DB 再删缓存 ✅ 最常用
延迟双删
MQ / Binlog ✅ 高阶方案

2️⃣ 热点 Key 问题(Hot Key)

问题

  • 某一个 key QPS 极高
  • 单个 Redis 节点被打爆

解决方案

  • 本地缓存
  • key 拆分
  • 多副本缓存
  • 读写分离

3️⃣ 大 Key 问题(Big Key)

问题

  • 单个 key 数据量过大
  • 阻塞 Redis 主线程

影响

  • QPS 下降
  • 主从同步延迟
  • AOF / RDB 卡顿

解决方案

  • 拆分 key
  • 使用 Hash/List 分片
  • 避免大集合

4️⃣ 数据过期与内存淘汰问题

问题

  • 内存满了怎么办?
  • key 没过期但被淘汰?

关键配置

maxmemory
maxmemory-policy

常见策略

  • allkeys-lru(最常用)
  • volatile-ttl

5️⃣ 事务不可靠(很多人忽略)

问题

  • Redis 事务(MULTI/EXEC)不支持回滚
  • 只能保证命令顺序

二、运维侧常见问题(高级工程师重点)

6️⃣ Redis 单线程瓶颈

问题

  • 单线程处理命令
  • CPU 可能成为瓶颈

优化

  • Pipeline
  • I/O 多线程(Redis 6+)
  • 拆分实例

7️⃣ 主从复制延迟

问题

  • 从节点数据落后
  • 读到旧数据

原因

  • 网络延迟
  • 大 Key
  • RDB 复制

8️⃣ 主从切换数据丢失

问题

  • 主节点宕机
  • 最新数据尚未同步到从节点

解决

min-replicas-to-write
min-replicas-max-lag

9️⃣ 持久化带来的性能抖动

问题

  • RDB fork 阻塞
  • AOF rewrite 卡顿

优化

  • off-peak 执行
  • 混合持久化(RDB+AOF)

🔟 Redis OOM / 内存碎片

问题

  • 内存用满
  • 碎片率过高

排查

INFO memory

三、集群 / 架构级问题(很加分)

1️⃣1️⃣ Cluster 重分片风险

  • slot 迁移导致性能抖动
  • 网络不稳定导致迁移失败

1️⃣2️⃣ 跨 Slot 操作限制

  • 多 key 必须同 slot
  • 事务、Lua 限制

1️⃣3️⃣ Lua 脚本阻塞

  • 长 Lua 会阻塞 Redis
  • 导致整个实例不可用

1️⃣4️⃣ Sentinel 误判

  • 网络抖动
  • 主节点被误下线

1️⃣5️⃣ 安全问题(真实事故)

  • 未设置密码
  • 绑定 0.0.0.0
  • 被写 crontab / SSH key

四、问题速查表

分类 问题
缓存层 穿透 / 击穿 / 雪崩
一致性 双写不一致
性能 热 key / 大 key
数据安全 主从丢数据
运维 OOM / 碎片
架构 Cluster 限制
安全 未授权访问

五、总结

Redis 除了缓存三大问题外,还常见缓存一致性、热点 key、大 key、内存淘汰、主从延迟、持久化抖动、Cluster 跨槽限制和安全问题。

在开发侧主要关注一致性和热点问题,在运维侧重点是内存、复制和持久化,在架构层面要注意 Cluster 和高可用设计。