Redis7.X部署指南:单机、主从、哨兵及集群
Redis部署有单机、主从、哨兵和集群四种模式。单机适合开发测试;主从实现读写分离与数据冗余;哨兵提供自动故障转移;集群支持数据分片与水平扩展。需根据业务对可用性、扩展性和性能的要求进行选择。
一、Redis简介与部署方式概览
Redis是当前后端开发中不可或缺的组件之一。作为高性能键值存储系统,它支持字符串、列表、哈希等多种数据结构,在缓存、消息队列、分布式锁等场景中扮演着重要角色。
Redis的具体部署方式多种多样,根据对可用性、扩展性和性能的不同要求,业界主要形成四种部署模式:

- 单机部署:简单直接,适合开发测试环境。
- 主从部署:数据冗余,读写分离,提升读性能。
- 哨兵部署:在主从基础上增加自动故障转移,大幅提升可用性。
- 集群部署:数据分片加高可用,是大规模、高并发场景下的主力方案。
接下来,我们将完整介绍每种部署方式的安装、配置和操作步骤。
二、环境准备(通用步骤)
2.1 系统要求
- Linux系统,建议CentOS 7+ 或 Ubuntu 18.04+
- GCC环境(Redis用C语言编写,需编译安装)
- 主从、集群节点之间网络互通
2.2 安装GCC
# 检查gcc是否安装gcc --version# 未安装则使用包管理器安装yum install gcc -y # CentOSapt install gcc -y # Ubuntu
2.3 关闭防火墙(测试环境建议)
systemctl stop firewalld.servicesystemctl disable firewalld# 或者使用firewall-cmd放行所需端口
这部分配置虽基础,但许多问题往往源于这些细节。
三、单机部署
3.1 下载与编译
mkdir -p /opt/software/rediscd /opt/software/redis# 下载最新稳定版wget https://download.redis.io/redis-stable.tar.gztar -xzf redis-stable.tar.gzcd redis-stable# 编译安装make install
3.2 检查安装
ll /usr/local/bin/redis-*
安装成功后,应看到以下关键文件:
redis-server:服务端核心程序redis-cli:客户端,用于日常操作redis-sentinel:哨兵程序redis-benchmark:性能压测工具
3.3 配置与启动
编辑 redis.conf 配置文件:
vim redis.conf
以下配置项需重点关注:
bind * -::* # 允许所有IP连接(生产环境需谨慎)protected-mode no # 关闭保护模式daemonize yes # 后台运行logfile /opt/software/redis/redis-stable/redis.logdir /opt/software/redis # 持久化文件存放目录requirepass 1qaz@WSX # 设置密码(必须项)
启动服务:
redis-server redis.confredis-cli -a 1qaz@WSX # 带密码连接
3.4 常用命令
keys * # 查看所有键(生产环境慎用)auth 密码 # 认证登录quit # 退出连接redis-cli shutdown # 关闭服务
单机部署是后续所有复杂模式的基础,掌握好配置文件和启动方式至关重要。
四、主从部署(Master-Slave)
4.1 架构说明
主从模式在实际项目中非常常见,其核心逻辑包括:
- 一个主节点负责写入,多个从节点同步数据并提供读服务
- 主节点可写,从节点默认只读
- 主节点故障需人工切换——这是主从与哨兵模式的主要区别
4.2 配置从节点
在从节点的 redis.conf 中添加以下配置:
replicaof 192.168.75.129 6379 # 主节点IP和端口masterauth 1qaz@WSX # 主节点密码
4.3 查看主从信息
在主节点上执行:
redis-cli -a 1qaz@WSX info replication
输出中可看到 connected_slaves 的数量以及从节点详细信息。若该值为0,说明配置有误,需检查网络和密码设置。
主从配置的关键在于从节点需明确“主节点位置”和“主节点密码”。
五、哨兵部署(Sentinel)
5.1 哨兵作用
主从模式解决了读写分离和数据冗余,但人工切换主节点在生产环境中效率低下。哨兵机制专门解决此问题:
- 持续监控主从节点健康状态
- 主节点故障时,自动从从节点中选举新主节点
- 将新主节点地址通知客户端
5.2 哨兵配置
编辑 sentinel.conf 配置文件:
protected-mode noport 26379daemonize yeslogfile /opt/software/redis/redis-stable/sentinel.logdir /opt/software/redis# 监控主节点,最后的2表示至少2个哨兵一致判定下线sentinel monitor mymaster 192.168.75.129 6379 2sentinel down-after-milliseconds mymaster 30000sentinel failover-timeout mymaster 180000
5.3 启动哨兵
redis-sentinel sentinel.conf
5.4 查看哨兵状态
redis-cli -p 26379 info sentinel
5.5 故障模拟与恢复
手动停止主节点后:
- 观察哨兵日志,了解故障发现、选举、新主节点产生过程
- 重新启动原主节点,它会自动成为新主节点的从节点
这就是“自动故障转移”,可保障生产环境服务不中断。
注意:若写入数据尚未同步到从节点,切换过程中可能会丢失部分数据。对数据一致性要求极高的场景需额外设计。
六、集群部署(Cluster)
6.1 集群特点
当数据量超出单机内存或并发量超过单机CPU处理能力时,需采用集群部署。集群将数据分散到多个节点:
- 数据分片:共16384个哈希槽,每个节点管理部分槽位
- 高可用:每个分片可配从节点,实现自动故障转移
- 水平扩展:增加机器即可扩容,无需停机
6.2 集群配置(三主三从示例)
以三台机器为例,每台机器运行两个Redis实例:主节点(6379端口)和从节点(6380端口)。也可将三主三从分布在六台机器上。
配置文件示例 redis_6379.conf(关键区别在于开启集群支持):
bind * -::*protected-mode noport 6379daemonize yescluster-enabled yescluster-node-timeout 5000dir /opt/software/redis/clusterappendonly yeslogfile "/opt/software/redis/redis-stable/cluster/redis6379.log"cluster-config-file nodes-6379.conf
同样为6380端口准备配置文件,修改端口和文件名即可。
6.3 启动所有节点并创建集群
# 依次启动所有节点redis-server ./cluster/redis_6379.confredis-server ./cluster/redis_6380.conf# 创建集群,--cluster-replicas 1 表示每个主节点配一个从节点redis-cli --cluster create \ --cluster-replicas 1 \ 192.168.75.129:6379 192.168.75.129:6380 \ 192.168.75.131:6379 192.168.75.131:6380 \ 192.168.75.132:6379 192.168.75.132:6380
6.4 集群常用命令
redis-cli cluster info # 查看集群整体状态redis-cli cluster nodes # 列出所有节点及角色redis-cli -c # 以集群模式连接,自动处理数据重定向
6.5 故障转移测试
停止某个主节点后,观察其从节点是否自动提升为主节点。随后将原主节点重新加入,它会自动作为从节点加入集群。
集群部署需注意端口规划、配置文件路径、节点网络互通等环节,常见错误包括端口未放行和配置文件目录路径错误导致日志创建失败。
七、配置文件与命令汇总
7.1 核心配置文件路径
不同模式对应的配置文件不同,需注意区分:
- 单机/主从:
/opt/software/redis/redis-stable/redis.conf - 哨兵:
/opt/software/redis/redis-stable/sentinel.conf - 集群:
/opt/software/redis/redis-stable/cluster/redis_{port}.conf
7.2 常用命令速查
# 服务管理redis-server xxx.confredis-cli shutdownps aux | grep redis# 集群操作redis-cli --cluster create ...redis-cli cluster nodesredis-cli -c# 数据操作keys *set/get/delauth 密码info replication
注意:生产环境慎用 keys *,数据量大时会阻塞服务。
八、部署建议与注意事项
选择部署模式需依据业务需求,下表可辅助决策:
| 部署方式 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| 单机 | 开发、测试 | 简单快捷 | 无高可用,性能受限 |
| 主从 | 读多写少,数据备份 | 读写分离,数据冗余 | 故障需人工干预 |
| 哨兵 | 高可用,自动故障转移 | 自动切换,客户端透明 | 配置复杂,数据可能丢失 |
| 集群 | 大数据量,高并发,高可用 | 数据分片,水平扩展 | 部署复杂,运维成本高 |
8.1 安全建议
安全问题是基础但常被忽视的环节:
- 生产环境必须设置密码
- 使用防火墙严格限制可访问Redis的IP
- 定期备份RDB或AOF文件,数据无价
8.2 性能调优建议
部署只是开始,用好才是关键:
- 根据内存和业务场景选择合适的持久化方式(RDB适合备份,AOF适合高数据完整性)
- 合理设置
maxmemory和内存淘汰策略,防止OOM导致进程崩溃 - 监控慢查询日志和内存碎片,及时优化和重写
九、总结
Redis的部署方式虽多,但选择并不复杂,核心是从业务场景出发:
- 学习和开发环境,单机即可,不必为炫技而上集群
- 小型项目,主从加哨兵是最经典且性价比高的组合
- 中大型高并发系统,集群是正确选择
从单机到集群,不仅是配置文件的增加,更是对可用性、扩展性和运维成本的全面考量。希望本指南能帮助你将Redis部署从“能跑”提升到“跑稳”。
