面试准备指南话题 #16

缓存一致性场景题:用时间线找出问题

面试之星官方的头像 面试之星官方 更新于

先定义允许的数据延迟,再分析缓存与数据库之间的读写交错、失败和补偿。

缓存一致性题没有脱离业务条件的统一答案。先明确数据是否允许短暂过期、读取与写入规模、失败后的恢复要求,再选择策略。讨论一个方案时,应同时说明正常路径和失败路径。

先写业务约束

区分商品展示、账户余额与库存扣减等不同场景。页面展示允许的延迟不能直接套到关键资金或库存状态上。真正的业务约束需要由负责方确认。

画出两个请求的时间线

把请求 A、请求 B、缓存与数据库分成四列,逐步写下读、写、删除与返回动作。尝试交换关键步骤的顺序,观察何时可能把旧值写回缓存。

加入故障条件

分别模拟缓存不可用、删除失败、数据库提交失败与消息延迟。记录每种情况下谁负责重试,重试是否幂等,什么证据能证明最终恢复。

检查回源压力

缓存失效或不可用时,数据库可能收到更大流量。为热点键、超时和限流设计可观测指标,再在隔离环境演练。不能只验证数据结果而忽略系统容量。

用证据结束回答

展示一张时间线、一个最小实验和一个仍然存在的限制。说明为什么当前业务接受这一限制,以及要求提高后要改变什么。避免把延迟双删、消息补偿或分布式锁描述成无条件保证正确的方案。

从 Redis 专题 回顾数据模型,再读 MySQL 专题 中的事务边界。

配套技术专题

更多准备指南

评论 0 友善交流,让每个问题都有回响

还没有评论,分享你的看法吧。