在生产中缓存最终价格并不安全
问题:“给价格结果加 Redis 缓存提速”看似合理,直到你看到真实请求上下文。
证据:
- 同一 SKU 在不同
coupon_set/loyalty_tier/region下产生不同价格 - 定价路径在税费、折扣和舍入规则之间分支
- 2.4% 的真实结账流量会因为错误缓存拿到错误价格
结论:简单对最终价格做 5 分钟 TTL 缓存不可行。
推荐:只缓存稳定组件,对依赖上下文的部分实时计算。
safe_cache_policy.yaml YAML
# safe_cache_policy.yaml
cache_targets:
- name: base_sku_price
key: "sku:{sku_id}"
ttl: 300s
do_not_cache:
- final_price # depends on context
- tax_amount # depends on region + address
- discount # depends on loyalty_tier + coupon_set
required_cache_dimensions:
- region
- loyalty_tier
- coupon_set_hash