Java 后端面试题库 / 全部题解免费阅读理解原理,有条理地回答

MySQL 与 Redis 双写怎样避免长期不一致?

查看完整题解

参考回答

直接回答

把业务写入收敛到数据库事务。提交成功后让缓存失效,用可靠事件和重试处理删除失败。出现并发回填时,用版本或明确的一致读路径处理。

讲清原理

如果两个系统分别成功或失败,无法只靠调整调用顺序解决所有交错。把待发送事件与数据库修改同事务写入,可以在服务恢复后补发。

并发读可能在缓存失效之后回填旧版本
并发读可能在缓存失效之后回填旧版本

例子与易错点

更新订单后,重复失效同一键通常无害。严格新鲜读可绕过缓存,回填按版本决定是否覆盖。

相关题 · 第 31 题、第 62 题

这道题,你掌握得怎么样?

掌握程度由你主动标记,阅读和收藏不会自动改变状态。