Redis 运维、观测与故障语义
将 Redis 指标、命令级观测、客户端策略与不同数据角色的 failure policy 放在同一模型中,区分 authority、cache、notification 与 queue 的故障行为。
#synthesis
#growing
#backend
#ops
#architecture
#redis
[!info] related notes
Redis 运维、观测与故障语义
范围
Redis 的生产正确性不仅取决于命令是否写对,还取决于:
latency
memory
eviction
connection pool
persistence
slow command
failure classification
recovery path
最关键的是:Redis 在不同场景扮演的角色不同,故障策略也必须不同。
常用观测入口
INFO
CLIENT LIST
SLOWLOG
MEMORY
LATENCY
SCAN
DBSIZE
MONITOR 可以临时诊断,但不适合作为常驻生产观测方案。
关键指标的语义
used_memory / used_memory_rss
connected_clients
rejected_connections
blocked_clients
expired_keys
evicted_keys
keyspace_hits / keyspace_misses
instantaneous_ops_per_sec
persistence / AOF status
replication lag
[!important] 指标必须结合 Key 的业务角色解释。Cache miss 与 Session miss 不是同一种“miss”。
Failure Policy 由 State Ownership 决定
Authority
例如 Session / Refresh authority:
Redis unavailable
→ cannot prove current state
→ fail closed
Rebuildable Cache
Redis unavailable
→ fallback authoritative source
→ correct but slower
Best-effort Notification
Redis Pub/Sub unavailable
→ continue durable commit
→ fallback reconciliation
Wakeup Optimization
Redis job-ready signal lost
→ periodic durable recovery sweep
BodySense Failure Matrix
| Capability | Redis 不可用时 |
|---|---|
| Session authority | 503 / fail closed |
| Refresh authority | 503,不签发无法记录的新 credential |
| Auth rate limit | 当前安全策略偏 fail closed |
| HealthWorkspace cache | fallback PostgreSQL |
| Knowledge/RAG cache | fallback normal retrieval |
| Runtime event notifier | fallback DB reconciliation |
| Job wakeup | fallback periodic DB sweep |
内存与隔离
如果同一实例混放:
security-critical state
+
disposable cache
+
notification
+
queue-like data
它们会共享 maxmemory、eviction policy、process failure、CPU、restart 和 connection limit。
Redis logical DB 不能提供这些故障域隔离。真正需要隔离时,应使用独立实例 / deployment boundary。
Client Policy
显式考虑:
DialTimeout
ReadTimeout
WriteTimeout
PoolSize
MinIdleConns
MaxRetries
TLS
startup Ping timeout
对安全关键路径,bounded latency 通常比无界 retry 更重要。
排障顺序
用户错误 / 延迟
→ 应用 Redis operation latency / error
→ connection pool
→ SLOWLOG / LATENCY
→ memory / eviction
→ persistence / fork
→ network / replication
避免“PING 正常 = Redis 健康”的误判。