第 5 阶段验收清单

1. 客户端接入

  • 能说明 Lettuce、Jedis、Redisson 的定位差异。
  • 能写出单机 Redis 的 Spring Boot 配置。
  • 能写出 Sentinel 模式配置,并解释 master 名称的作用。
  • 能写出 Cluster 模式配置,并解释 seed nodes、max-redirects、拓扑刷新的意义。
  • 能说明为什么生产环境不能写死 Redis master IP。
  • 能说明 Cluster 场景下 MOVEDASKCROSSSLOT 对 Java 客户端意味着什么。

2. 连接池与超时

  • 能解释连接池过小会造成什么现象。
  • 能解释连接池过大会带来什么风险。
  • 能根据业务链路预算设置 Redis 命令超时。
  • 能说明哪些请求可以重试,哪些请求不能盲目重试。
  • 能在 Redis 抖动时给出降级或失败策略。

3. 缓存架构

  • 能画出 Cache Aside 的读写流程。
  • 能解释为什么常见做法是写数据库后删除缓存。
  • 能说明缓存穿透、缓存击穿、缓存雪崩的区别。
  • 能实现空值缓存防穿透。
  • 能实现热点 key 互斥重建防击穿。
  • 能实现 TTL 随机化降低雪崩风险。
  • 能说明缓存一致性方案的边界。

4. 分布式锁

  • 能用 SET key value NX PX ttl 获取锁。
  • 能用 Lua 比较 token 后释放锁。
  • 能说明锁 TTL 过短和过长的风险。
  • 能说明 Redis 分布式锁不能替代数据库事务。
  • 能说明 Redisson 的优势和边界。

5. Lua、Pipeline 与业务场景

  • 能用 Lua 实现库存原子扣减。
  • 能说明 Lua 为什么不能写长循环或复杂逻辑。
  • 能用 Pipeline 批量写入或读取 key。
  • 能说明 Pipeline 不保证原子性。
  • 能用 ZSet 实现排行榜。
  • 能用 Redis 实现固定窗口限流。
  • 能用 Redis 实现请求幂等。

6. 本项目代码验收

  • POST /api/redis/scenarios/run-all 能正常执行。
  • 能在 Redis 中看到 learn:redis:* 命名空间下的实验 key。
  • 能说明每一类 key 的业务含义和 TTL 策略。
  • 能通过日志或接口返回解释每个实验的结果。
  • 能清理实验 key,避免学习环境长期堆积无用数据。