主题
Redis 生产检查清单
适用 Redis 7.x;Vector Sets 相关条目需 Redis 8.0+。每条都可勾选,括号内是默认值或判断依据;版本差异以官方文档为准。 这份清单只列「不做会出事」的动作,机制解释见各篇正文。
上线前
- [ ] 内存上限与淘汰策略:显式设置
maxmemory且不超过物理内存 50%(默认 0 即不限制,以官方文档为准);纯缓存用allkeys-lru,混合存储用volatile-lru且所有缓存 key 必须带 TTL(默认noeviction,写满直接报错)。 - [ ] 持久化可恢复:
appendonly yes、appendfsync everysec、aof-use-rdb-preamble yes(5.0+);自动 RDB 用save ""关闭,改低峰手动BGSAVE;做过一次 AOF/RDB 真实恢复。 - [ ] 危险命令与大 key 门禁:
rename-command KEYS "",生产不用MONITOR,遍历用SCAN;String >10KB 或集合 >5000 元素视为大 key,写入前拦截,删除用UNLINK(4.0+)。 - [ ] 缓存防护到位:TTL 加 0–300 秒随机偏移;穿透用布隆过滤器(误判率 0.01%–0.1%)或空值 TTL 5–10 分钟;热点 key 用 1–5 秒本地缓存或 2–4 个副本打散。
- [ ] 高可用拓扑:Sentinel 至少 3 个、
quorum=N/2+1(quorum 只判定 ODOWN,执行切换的 Leader 另需全部 Sentinel 的多数票)、down-after-milliseconds=15000–30000;或 Cluster 至少 3 主 3 从,客户端支持 MOVED/ASK。 - [ ] 分布式锁语义正确:
SET key uuid NX EX 30,解锁用 Lua 比对 value 后删除;不指定 leaseTime 才启用 WatchDog(默认 30000ms);强一致场景不把锁押在单节点 Redis 上。 - [ ] AI 向量内存先算清:按
维度×4B再加 HNSW 图 1.5–2 倍估算(1536 维 float32 约 6KB/条,1000 万条是百 GB 级);语义缓存 key 带模型与索引版本。
运行中
- [ ] 内存与慢命令:
INFO memory看used_memory/maxmemory、mem_fragmentation_ratio>1.5、evicted_keys增长;INFO stats算keyspace_hits/misses;SLOWLOG GET 10与latest_fork_usec一起看。 - [ ] 复制链路:
INFO replication看lag、master_repl_offset与slave_repl_offset差值;repl-backlog-size=1MB按「写入速率×最长断线×2」调大。 - [ ] Cluster 健康:
CLUSTER INFO为cluster_state:ok且 16384 个 slot 全覆盖;单分片 CPU/内存长期高于其他分片 2 倍视为倾斜。
故障时
- [ ] 内存翻倍后被 OOM Killer 杀 →
INFO memory+latest_fork_usec→BGSAVE/全量同步的 COW 峰值 → 关闭自动 RDB、把maxmemory降到物理内存 50% 以下。 - [ ] 全站超时但 CPU 不高 →
SLOWLOG GET→ 有KEYS/HGETALL/DEL大 key 等 O(N) 命令 → 改SCAN/UNLINK,并排查大 key 删除。 - [ ] 单个分片 CPU 100% →
redis-cli --hotkeys(需 LFU)或客户端埋点 → 热 key 集中 → 本地缓存、副本打散或拆分 key。 - [ ] 缓存大面积失效、DB 连接池被打满 →
keyspace_hits/misses+evicted_keys→ TTL 同时到期或热点被淘汰 → 随机 TTL + 逻辑过期,先限流保 DB。 - [ ] 主从切换后丢最近写入 →
INFO replication的 offset 差 + 业务核对 → 异步复制固有窗口 → 关键写用WAIT(3.0+),或确认业务可接受缓存语义。