缓存一致性不是二元命题。对大多数业务来说,重要的不是“绝对一致”,而是明确:哪一类数据可以旧多久,哪一类操作绝不能错。
商品详情允许数秒的价格展示延迟,库存扣减通常不能接受;报表看板可以异步刷新,支付状态必须有可追溯的最终结果。把这些边界说清楚,才有资格讨论 Cache Aside、延迟双删、消息驱动或版本号校验。
设计缓存时,我会先写下三条约束:
- 不一致的可见范围与最长时间;
- 缓存失效或穿透时的服务降级策略;
- 写入失败时的补偿、告警与人工介入方式。
技术方案只是实现手段。先定义业务可承受的风险,缓存设计才会变得简单。