小型应用把 Web 服务与 Redis 放在同一台云服务器上,部署简单、成本也容易控制。随着流量和数据量增长,机器偶尔变慢,很多团队会马上再买一台 Redis 服务器。但“分开”只是改变资源边界,若问题是缓存策略错误、热 key、慢命令或客户端连接失控,增加实例也未必解决。先量出资源争抢和故障影响,再决定是否拆分。
本文适用于自建 Redis 与应用同机、准备扩容或迁移的场景。托管 Redis 的运维界面和指标名称可能不同,但判断方法相通。示例命令请在有授权的本机或内网管理环境运行,不要为诊断临时把 Redis 端口暴露到公网。
第一步:采集同一时段的内存与淘汰数据
在高峰期、备份/重写期和普通时段各采样一次。以下命令以本机 6379 端口为例;若启用了 ACL 或 TLS,请按现有安全连接方式执行,不要把密码写在命令行参数里。
redis-cli-h127.0.0.1-p6379INFO memory redis-cli-h127.0.0.1-p6379INFO statsfree-h重点记录used_memory、used_memory_rss、used_memory_peak、maxmemory,以及evicted_keys的增量。used_memory_peak是 Redis 分配器口径的历史峰值,不等于整机内存峰值;evicted_keys是累计值,必须用相邻采样差值判断。若应用与 Redis 同机,要同时记录应用进程的 RSS、整机可用内存和 swap 活动,而不是仅看 Redis 自报内存。
一个实用判断式是:同一负载窗口内的应用内存 + Redis 常驻内存 + 系统与其他服务 + 持久化期间额外余量,是否在机器可用内存内,并且留有增长空间。不要把不同日期的几个“最高值”相加当成精确需求,也不要只按 Redis 的maxmemory购买等额内存。Redis 文档指出,内存管理还要考虑碎片、复制与持久化等开销。
第二步:看持久化是否与应用争磁盘
如果启用了 RDB 快照或 AOF,观察持久化时间与应用延迟是否重合:
redis-cli-h127.0.0.1-p6379INFO persistence iostat-xz15iostat由系统的sysstat工具提供;没有安装时可先使用云平台的云盘读写延迟、吞吐和队列监控。Redis 的 RDB 保存、AOF 重写会产生后台工作及磁盘 IO;有些阶段还会带来额外内存压力。若同一块云盘上的应用日志、数据库和 Redis 持久化在相近时段一起变慢,先检查任务时间、磁盘能力和日志量,再决定是调整存储、错峰,还是拆到独立实例。
不能因为“Redis 是内存数据库”就忽略云盘;也不能看到一次iostat高值就认定 Redis 是根因。把INFO persistence、应用 P95 延迟和云盘监控按时间对齐,才能建立证据链。
第三步:把故障域和数据性质一起算进去
同机部署时,应用进程失控占满 CPU/内存可能影响 Redis,Redis 的内存或持久化问题也可能拖累应用;对小型、可重建的纯缓存,这个代价可能可接受。若 Redis 保存会话、队列状态或其他不能轻易重建的数据,除了资源隔离,还必须明确持久化、备份、恢复演练和故障切换要求。
可按下面的顺序决定:
- 继续同机:高峰期内存、CPU、磁盘延迟有稳定余量,数据可重建,单机故障的影响可接受。先把监控和备份做扎实。
- 拆到独立云服务器或托管 Redis:资源争抢有证据、不同业务需要分别扩容,或需要独立的维护窗口与权限边界。迁移前核对内网连通、访问控制、数据同步与回滚路径。
- 进一步做高可用:如果 Redis 故障不能导致业务不可用,单独买一台仍是单点;需要按 RTO/RPO、复制、故障切换及恢复演练设计,而不是把“拆机”误认为容灾完成。
迁移前后怎么验证
先在可回滚的测试环境复现峰值流量,并记录同一窗口的应用 P95、Redis RSS、evicted_keys增量、持久化状态与云盘延迟。若决定拆分,先建立私网访问控制与容量监控,按数据类型选择迁移/重建方式;切换前明确旧实例保留时长和回退条件。切换后重复相同负载测试,确认应用延迟、错误率和 Redis 内存趋势改善,而不是把瓶颈转移到了网络或新的云盘。
常见误区
- 只看
maxmemory买内存。这不是 Redis 进程或整机的总占用上限,还要看 RSS、碎片、后台任务与同机应用。 - 拆成两台就等于高可用。独立部署改善资源隔离,但 Redis 单实例故障仍可能中断业务。
- 只看当前
used_memory。容量决策应覆盖业务峰值、数据增长、淘汰增量和持久化窗口。 - 缓存可以丢,所以无需备份。对纯可重建缓存可以采用不同策略;会话、队列等重要状态要按实际恢复目标评估持久化和备份。
如果准备购买或升级云服务器,先用一周以上的真实高峰与持久化窗口数据估算内存和 IO 余量,再决定继续同机、换更大实例、增加独立 Redis 云服务器,还是使用托管服务。把网络隔离、备份和高可用要求一起列进选型清单,比单看“几核几 G”更容易买到匹配业务的配置。
参考:Redis INFO 命令与指标、Redis 持久化说明、Redis 内存优化。