缓存与 KV 工具
缓存的价值是削峰和缩短访问路径,代价则是额外的一致性、容量和故障模式。把缓存当成“更快的数据库”,通常会在淘汰、重启、热点键或网络抖动时暴露数据语义错误。
产品地图
| 工具 | 核心能力 | 重点判断 |
|---|---|---|
| Redis | 丰富数据结构、持久化、复制、哨兵与集群 | 一致性语义、热点键、内存淘汰、复制与故障转移 |
| Valkey | Redis 协议生态下的开源路线 | 客户端兼容、命令差异、迁移、集群与维护策略 |
| Memcached | 简单分布式内存 KV 缓存 | 客户端分片、无持久化、节点增减与缓存失效模型 |
先确定数据语义
选择工具前先回答三个问题:缓存丢失后能否从权威数据源重建,旧值允许存在多久,缓存不可用时业务应该降级还是失败。回答不清时,任何高可用拓扑都只是在延后问题。
共同治理基线
- key 包含系统、环境、业务和版本前缀,不把用户输入直接拼成无界 key。
- TTL 需要随机抖动并与业务容忍度一致,不能依赖“永不过期”。
- 管理命令、批量扫描和危险删除使用独立身份,生产禁用无边界通配操作。
- 监控命中率、eviction、内存碎片、连接数、慢命令、复制延迟和大键。
- 演练节点重启、缓存全失效、热 key 和下游数据库限流,验证降级链路不会击穿权威存储。
第一次学习可先从 Redis 单机完成写读、TTL、ACL、持久化与重启实验,再进入哨兵、集群和 Valkey 迁移;只有明确需要最简单的易失 KV 时,再评估 Memcached。
