在单台 Linux 服务器上同时部署 Redis 和 MySQL(非生产级,仅用于开发、测试或轻量级应用),推荐的最低硬件配置需兼顾两者的基本运行需求及避免资源争抢。以下是基于官方文档、社区实践和性能经验的务实建议:
✅ 推荐最低硬件配置(轻量级/开发/POC 场景)
| 组件 | 推荐最低配置 | 说明 |
|---|---|---|
| CPU | 2 核(vCPU 或物理核心) | MySQL(尤其 InnoDB)和 Redis 均受益于多核;1 核易成瓶颈(尤其并发连接或持久化时)。 |
| 内存(RAM) | 4 GB | ⚠️ 关键项! • MySQL:至少 1.5–2 GB 分配给 innodb_buffer_pool_size(建议设为物理内存的 50–70%,但单机共存需让步)• Redis:至少 512 MB–1 GB(若用作缓存,需预留空间避免 OOM) • 系统 + 其他进程:预留 ≥512 MB → 低于 4 GB 极易触发 swap,导致严重性能下降甚至服务不可用 |
| 存储(磁盘) | SSD,≥20 GB 可用空间 | • HDD 在 RDB/AOF 重写 + MySQL redo log/ibdata 写入时 I/O 延迟高,不推荐 • SSD 显著改善持久化性能与响应延迟 • 20 GB 满足 OS + MySQL 数据(<5 GB)+ Redis RDB/AOF(<2 GB)+ 日志 + 预留空间 |
| 操作系统 | 64 位 Linux(如 Ubuntu 22.04 / CentOS Stream 9 / Rocky 9) | 必须 64 位(Redis 7+ / MySQL 8+ 均要求),内核 ≥5.4 更佳(优化内存管理与 I/O) |
⚠️ 关键注意事项(比硬件更重要!)
-
内存分配必须手动调优(否则极易崩溃)
- MySQL 示例(
my.cnf):[mysqld] innodb_buffer_pool_size = 1.5G # 不超过总内存 40%(因需共享给 Redis) max_connections = 100 # 避免连接数过多耗尽内存 tmp_table_size = 32M max_heap_table_size = 32M - Redis 示例(
redis.conf):maxmemory 1g # 必须设置!防止吃光内存 maxmemory-policy allkeys-lru # 合理驱逐策略 save 900 1 # 减少 RDB 频率(或禁用:save "") appendonly no # 开发环境可关闭 AOF(或设为 everysec)
- MySQL 示例(
-
禁止启用 swap 用于 Redis/MySQL(或严格限制)
vm.swappiness=1(而非默认 60)- Redis 使用
swap会导致超时断连;MySQL 交换会极大拖慢查询。
-
端口与资源隔离
- 修改默认端口(如 Redis 改为
6380,MySQL 为3307)避免冲突 - 使用
systemd限制各自内存/CPU(可选但强烈推荐):# /etc/systemd/system/mysqld.service.d/limits.conf [Service] MemoryMax=2G CPUQuota=70%
- 修改默认端口(如 Redis 改为
-
备份与监控不可省略
- 即使是开发机,也应配置定时
mysqldump+redis-cli bgsave - 安装
htop、iotop、redis-cli info memory、mysqladmin status监控实时负载
- 即使是开发机,也应配置定时
❌ 不推荐的配置(常见踩坑)
| 配置 | 问题 |
|---|---|
| 1 核 2 GB RAM | MySQL 启动后剩余内存不足 Redis 加载数据 → Redis OOM kill 或频繁 swap |
| HDD 存储 | Redis bgsave + MySQL flush logs 同时触发时 I/O 队列堆积,延迟飙升 |
未设 maxmemory |
Redis 无节制增长,挤占 MySQL 内存 → MySQL 报错 Out of memory |
默认 swappiness=60 |
内存紧张时系统优先 swap 进程页,Redis/MySQL 响应时间从 ms 级升至秒级 |
📈 扩展建议(当业务增长时)
- 50+ 并发用户 / 日活 < 1k → 升级到 4 核 8 GB + NVMe SSD
- 生产环境(任何规模) → 务必分离部署:Redis 和 MySQL 分属不同服务器(或容器/K8s),并配置专用监控(Prometheus + Grafana)、高可用(Redis Sentinel / MySQL Group Replication)。
✅ 总结一句话:
“4 GB 内存 + 2 核 + SSD” 是单机共存 Redis 与 MySQL 的实际底线;低于此配置,不是“能跑”,而是“随时崩”,且调优成本远高于升级硬件。
如需,我可为你提供:
- 完整的
my.cnf+redis.conf调优模板(适配 4GB 场景) - systemd 资源限制配置脚本
- 自动化监控检查脚本(Bash/Python)
欢迎继续提问!
轻量云Cloud