Skip to content

10. 实战场景 ​

把前面能力落到可口述的业务故事。每条:场景 → Redis 怎么用 → 核心优化 → 边界。

更细的缓存架构推演见:场景实战:缓存设计。
秒杀系统设计还可对照:秒杀系统。


登录 / 会话 ​

  • 用法: String / Hash 存 token 或 session;EXPIRE 控制登录态
  • 优化: Key 带用户维度;续期滑动过期;敏感信息不落明文
  • 边界: 强制下线、多端互踢要有版本号或 token 黑名单

秒杀 ​

  • 用法: 库存预扣在 Redis(Lua 判断 + DECR);成功再异步下单
  • 优化: 分桶库存打散热 Key;接口限流;缓存与 DB 对账
  • 边界: 支付与订单以 DB 为准;Redis 防超卖,不是账务系统

详见:并发:库存 · 分布式锁


点赞 / 计数 ​

  • 用法: INCR 计总数;Set 记「谁点过」防重复
  • 优化: 计数与明细分离;高峰异步落库
  • 边界: 计数可最终一致;审计明细需要持久化

排行榜 ​

  • 用法: ZSet,score 为热度/分数;ZREVRANGE 取 TopN
  • 优化: 定时快照;超大榜分页与裁剪;防刷分
  • 边界: 实时榜与日榜/周榜可用不同 Key

分布式锁 ​

  • 用法: 互斥更新、防重复提交、定时任务多实例
  • 优化: Redisson + 看门狗;解锁校验持有者;业务可重入要明确
  • 边界: 锁粒度尽量细;锁内禁止超长远程调用

详见:分布式锁


接口限流 ​

  • 用法: Redis 计数器 / 滑动窗口;网关 + 业务双层
  • 优化: Key 设计含接口与主体;过期防泄漏;返回明确错误码
  • 边界: 全局限流与用户级限流分开

详见:并发:限流


缓存架构 ​

text
客户端
  →(可选)Nginx / 本地短缓存
  → 应用 Caffeine(热点)
  → Redis
  → MySQL
  • 优化: Cache Aside(先更新 DB 再删缓存);过期随机;空值防穿透;热点本地挡
  • 一致性: 普通业务删缓存即可;强一致需求上 Binlog 监听或短时双删

详见:缓存问题 · 缓存设计实战


口述总模板 ​

我们用 Redis 做缓存和分布式协调。读路径多级缓存防击穿雪崩;写路径更新 DB 后删缓存。库存和限流用 Lua 保证原子。锁用 Redisson 续期。大 Key / 热 Key 会拆分或加本地缓存。持久化与主从按环境配置,集群在需要水平扩展时再上。

自测:每个场景能不看稿讲 30~60 秒,并回答一个追问(一致性 / 超卖 / 锁超时)。