标准答案
- 把商品基础信息、价格、库存、营销和推荐按更新频率与一致性要求拆分,避免所有数据都走同一缓存和同一失效策略。
- 公开且稳定的内容可使用 CDN 和本地缓存,跨实例共享数据使用分布式缓存,数据库仍是核心事实来源。
- 对热 Key 使用预热、逻辑过期、请求合并或限流保护,防止失效瞬间大量请求穿透数据库。
- 降级时可以展示最近缓存的详情并关闭非关键推荐或实时统计,但价格、库存和购买资格需要明确陈旧边界。
题目解析
商品详情难点不是把数据放进 Redis,而是更新和读取路径能否在高峰下保持一致、可观测和可恢复。
热点通常集中在少数商品或活动时间窗,设计应能按商品粒度限流、预热和隔离,避免一个爆款影响全站。
常见误区
- 把库存和价格长期当作无条件可缓存数据。
- 所有详情字段使用同一个 TTL,导致更新频率不同的数据互相牵连。
- 缓存失效时没有保护,直接把峰值流量打到数据库。