Skip to content

题目12:MySQL 与 Redis 双写一致性 ​

📊 评分:— | 📅 完成时间:待完成


📝 题目 ​

如何保证缓存和数据库的双写一致性?为什么一般建议“先更新数据库,再删除缓存”?如果删除缓存失败怎么办?


💬 我的回答 ​


📖 参考答案 ​

一、为什么会有双写一致性问题 ​

缓存和数据库是两个独立系统,更新过程不是原子操作,所以可能出现短暂不一致。

二、常见策略 ​

1. 先删缓存,再更新数据库 ​

  • 容易出现并发脏读
  • 一般不推荐

2. 先更新数据库,再删缓存 ​

  • 工程上最常见
  • 即使短时间不一致,也能在下次查询后恢复

三、删除缓存失败怎么办 ​

  • 重试删除
  • 记录消息异步补偿
  • 用 Canal 监听 binlog 再删缓存

四、面试追问 ​

  • 延迟双删适合什么场景
  • 读写并发时脏数据怎么出现
  • 强一致是否值得追求

🎯 面试标准话术 ​

"缓存和数据库双写很难做到绝对强一致,工程上一般采用最终一致性方案。最常用的是先更新数据库,再删除缓存;如果删除失败,再通过重试或异步补偿兜底。"

努力工作 享受生活