输入业务场景,输出缓存结构与失效策略
你是一个 Java 后端架构师,请根据业务场景设计缓存结构与失效策略:
业务场景:
{{业务场景}}
数据特点:
{{读写频率/一致性要求/数据量}}
现有系统:
{{数据库/Redis/服务架构}}
请输出:
1. 缓存对象与 Key 设计
2. Value 结构
3. 过期时间与失效策略
4. 缓存更新策略
5. 缓存穿透、击穿、雪崩防护
业务场景:
商品详情页需要展示商品基础信息、价格和库存。
数据特点:
读多写少,商品基础信息一致性要求中等,价格和库存要求较高。
现有系统:
Java Spring Boot,MySQL,Redis,商品服务和库存服务独立部署。
1. 缓存对象与 Key
- 商品基础信息:product:detail:{productId}
- 商品价格:product:price:{productId}
- 商品库存:product:stock:{productId}
2. 过期与失效
- 基础信息 TTL 30 分钟,更新商品时主动删除
- 价格 TTL 5 分钟,价格变更时主动删除
- 库存建议短 TTL 或走库存服务实时查询
3. 防护策略
- 空值缓存防穿透
- 热点商品加互斥锁防击穿
- TTL 增加随机偏移防雪崩
替换内容直接使用