拿下技术面上传简历

商品详情接口用 Redis 做缓存,key 是 item:{id},value 是完整商品 JSON,TTL 设为 24 小时;读路径是先查 Redis,miss 则查 DB 并回填。运营改价时写路径目前是:UPDATE DB 成功后执行 DEL Redis。问:这个做法在什么情况下会让缓存里长时间停留在旧值?如果反过来改成先 DEL 再 UPDATE DB,风险是什么?

工程与系统设计数据与存储1-3 年知识点 1 个

面试官在考什么

判断候选人有没有真正碰到并定位过缓存与 DB 的一致性问题,而不是只会背『先删缓存再更新 DB』或『延迟双删』。

Redis 使用场景

回答框架 · 前两步

  1. 先更新 DB 再删缓存,依赖删除一定成功;如果 DEL 因为网络超时或 Redis 抖动失败又没有重试,旧值会一直留到 24 小时 TTL 到期,表现为长时间不一致。
  2. 即便 DEL 成功也存在竞态:某个读请求在更新前读到旧值(或 miss 后查到旧值),延迟到 DEL 之后才回填,就把旧值重新写进缓存,并靠 24 小时 TTL 长期存在。

还有 3 条答案要点、 3 层追问、 5 个常见坑, 以及针对你简历的追问路径,在定制报告里。

上传简历,生成我的题库先看示例报告

同一能力域的其他题