Redis 缓存过期不一致踩坑实录:一个 bug 让我排查了 3 小时,最终用 Pytest 自动化堵上漏洞凌晨两点,手机疯狂震动。运营在群里连发三条消息:「用户订单状态显示‘已取消’,但支付网关已经扣款成功了!」 我爬起来一看,数据库记录明明是 PAID,可 Redis 里缓存的还是 CANCELLED,而且 TTL 还剩 4 分多钟——也就是说,接下来的 4 分钟里,所有命中缓存的请求都会返回错误状态。那晚我盯着一行 SETEX 代码从两点看到五点,终于搞明白:不是 Redis 的锅,而是过期策略和更新时序之间藏着一个教科书级别的竞态。手工测试根本复现不了,只有生产流量够大才会触发。修完 bug 之后我第一