缓存一致性场景题:用时间线找出问题
先定义允许的数据延迟,再分析缓存与数据库之间的读写交错、失败和补偿。
缓存一致性题没有脱离业务条件的统一答案。先明确数据是否允许短暂过期、读取与写入规模、失败后的恢复要求,再选择策略。讨论一个方案时,应同时说明正常路径和失败路径。
先写业务约束
区分商品展示、账户余额与库存扣减等不同场景。页面展示允许的延迟不能直接套到关键资金或库存状态上。真正的业务约束需要由负责方确认。
画出两个请求的时间线
把请求 A、请求 B、缓存与数据库分成四列,逐步写下读、写、删除与返回动作。尝试交换关键步骤的顺序,观察何时可能把旧值写回缓存。
加入故障条件
分别模拟缓存不可用、删除失败、数据库提交失败与消息延迟。记录每种情况下谁负责重试,重试是否幂等,什么证据能证明最终恢复。
检查回源压力
缓存失效或不可用时,数据库可能收到更大流量。为热点键、超时和限流设计可观测指标,再在隔离环境演练。不能只验证数据结果而忽略系统容量。
用证据结束回答
展示一张时间线、一个最小实验和一个仍然存在的限制。说明为什么当前业务接受这一限制,以及要求提高后要改变什么。避免把延迟双删、消息补偿或分布式锁描述成无条件保证正确的方案。
从 Redis 专题 回顾数据模型,再读 MySQL 专题 中的事务边界。

评论 0 友善交流,让每个问题都有回响
还没有评论,分享你的看法吧。