Redis 作为缓存层跑在应用和数据库之间,承担了大部分读请求。配置得当时可以拦截 90% 以上的数据库查询,把 API 响应时间从几百毫秒压到个位数。配置不当则内存溢出、数据丢失、延迟飙升。

一、阿里云 Redis 实例架构与版本选型
三种主流架构,按存储与流量匹配
- 标准版(主从双副本) 单分片架构,内存上限 64GB,自带一主一备自动故障切换。适合内存需求 64GB 以内、读写均衡的站点、后台缓存业务;读流量极高可额外增加只读副本做读写分离,无需升级集群。
- 集群版(多分片主从) 单分片超过 64GB、百万级高 QPS 业务选用,数据分散至多个分片,吞吐量随分片数量线性扩容;注意存在限制:跨分片多键命令执行受限,上线前需核对业务代码兼容性。
- 读写分离版 存储容量 64GB 以内、读请求远超写入的场景专用,主节点负责写,只读副本分流全部查询流量,性价比高于集群。
Redis 版本推荐 6.0 / 7.0
- Redis 6.0:新增多线程 IO 提升网络吞吐、ACL 精细化账号权限,适配绝大多数存量业务;
- Redis 7.0:内置 Redis Functions 替代复杂 Lua 脚本、优化 RDB 子进程内存开销,高并发新项目优先选用; 老旧 4.0/5.0 实例迁移前,在控制台使用数据校验功能比对源库与目标库一致性,集群业务额外做代码兼容性回归测试。
二、容量规划:预留内存,防止 OOM 直接杀进程
自建 Redis 可通过 maxmemory 自定义内存上限,但阿里云托管 Redis 的 maxmemory 固定等于实例规格,无法手动调低。 生产通用安全规范:业务数据内存占用控制在实例总内存 80%-85%,预留 15%-20% 空闲内存,用于主从复制缓冲区、AOF 重写子进程、客户端输出缓冲区。若 8GB 实例数据长期占用超 85%,fork 持久化进程瞬间内存翻倍,极易触发系统 OOM Killer 直接终止 Redis 进程。 配套优化:开启后台提前淘汰参数,内存到达安全阈值后台自动清理冷 key,避免瞬间内存打满。
两大内存淘汰策略,按业务场景区分
- volatile-lru:仅在设置过期时间的键中淘汰最少访问数据;适合混合存储永久数据 + 临时缓存的混合业务。
- allkeys-lru:所有键统一按 LRU 规则淘汰,纯缓存场景(全部 key 配置过期时间)首选,缓存命中率更稳定。
- noeviction:内存满时拒绝所有写入、直接返回报错,几乎不用于线上缓存业务,仅不可丢失的核心存储场景谨慎使用。
三、持久化方案:RDB、AOF、混合持久化搭配使用
阿里云 Redis 默认开启 RDB 定时快照持久化,可自定义每日快照时间窗口,RDB 文件体积小、故障恢复速度快,但两次快照间的数据存在丢失风险。 AOF 增量日志记录每一条写操作,最多仅丢失 1 秒数据(默认 everysec 刷盘策略),数据安全性更高;缺点是文件体积持续膨胀,重写时占用大量内存与磁盘 IO。 混合持久化 :AOF 文件头部存放 RDB 全量快照,尾部记录快照后的增量操作。重启恢复先快速加载 RDB,再回放少量 AOF 日志,兼顾恢复速度与数据安全,控制台一键开启。 场景划分:
- 订单、支付、会员核心数据:强制开启混合持久化;
- 浏览记录、临时会话、短期缓存:仅保留默认 RDB 即可,降低磁盘 IO 开销。
四 、性能观测指标,快速定位缓存故障
阿里云 Redis 内置完整监控面板,重点关注四类核心指标:
- 缓存命中率 KeyspaceHitRate:低于 95% 说明大量请求穿透至数据库,常见原因:内存不足频繁淘汰热 key、过期时间设置过短、存在缓存穿透 / 空值缓存、分片数据倾斜;配套监控 evicted_keys 淘汰总量,持续上涨代表内存容量不足。
- 连接数 ConnectedClients:长期逼近实例最大连接上限,客户端改用长连接 + 连接池复用,禁止短连接频繁创建销毁。
- 慢查询 slowlog:配置 slowlog-max-len=128,执行耗时超 10ms 的命令自动记录,用于排查批量查询、低效 Lua 脚本拖慢整体响应。
配套生产环境补充规范
- 全部线上实例选用双副本架构,单副本无故障自动切换能力,仅测试环境临时使用;
- 安全加固:绑定 VPC 内网访问、配置 IP 白名单、使用 ACL 细分账号权限,禁止公网直连 Redis;
- 业务分层隔离:临时缓存、订单永久数据分开部署两套 Redis,避免缓存淘汰删除核心业务数据;
- 扩容预警:监控内存使用率持续超过 80% 提前升级规格,避开流量高峰扩容操作。