Redis 7.X 部署指南:单机、主从、哨兵、集群

一、Redis简介与部署方式概览

Redis是一款高性能的键值存储系统,支持多种数据结构,常用于缓存、消息队列、分布式锁等场景。根据不同的可用性、扩展性与性能需求,Redis提供了四种常见部署模式:

  1. 单机部署:适合开发、测试环境,简单快捷。

  2. 主从部署:实现数据冗余与读写分离,提升读取性能。

  3. 哨兵部署:在主从基础上实现自动故障转移,提高可用性。

  4. 集群部署:支持数据分片与高可用,适合大规模、高并发场景。

下面将逐步讲解每种部署方式的安装、配置与操作。


二、环境准备(通用步骤)

2.1 系统要求

  • Linux系统(CentOS 7+ / Ubuntu 18.04+)

  • GCC环境(Redis由C编写)

  • 网络互通(集群、主从需互通)

2.2 安装GCC

复制代码
# 检查gcc是否安装
gcc --version

# 安装gcc
yum install gcc -y        # CentOS
apt install gcc -y        # Ubuntu

2.3 关闭防火墙(测试环境建议)

复制代码
systemctl stop firewalld.service
systemctl disable firewalld
# 或使用firewall-cmd放行相应端口

三、单机部署

3.1 下载与编译

复制代码
mkdir -p /opt/software/redis
cd /opt/software/redis
wget https://download.redis.io/redis-stable.tar.gz
tar -xzf redis-stable.tar.gz
cd 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.log
dir /opt/software/redis
requirepass 1qaz@WSX            # 设置密码(可选)

启动服务:

复制代码
redis-server redis.conf
redis-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 数量及从节点信息。


五、哨兵部署(Sentinel)

5.1 哨兵作用

  • 监控主从节点状态

  • 自动故障转移

  • 通知客户端新主节点地址

5.2 哨兵配置

编辑 sentinel.conf

复制代码
protected-mode no
port 26379
daemonize yes
logfile /opt/software/redis/redis-stable/sentinel.log
dir /opt/software/redis
sentinel monitor mymaster 192.168.75.129 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel failover-timeout mymaster 180000

5.3 启动哨兵

复制代码
redis-sentinel sentinel.conf

5.4 查看哨兵状态

复制代码
redis-cli -p 26379 info sentinel

5.5 故障模拟与恢复

  1. 停止主节点

  2. 观察哨兵日志,查看新主节点选举

  3. 重启原主节点,观察是否变为从节点


六、集群部署(Cluster)

6.1 集群特点

  • 数据分片(16384个哈希槽)

  • 自动故障转移

  • 支持水平扩展

6.2 集群配置(三主三从示例)

每台机器配置两个节点(6379主,6380从)。

配置文件示例 redis_6379.conf

复制代码
bind * -::*
protected-mode no
port 6379
daemonize yes
cluster-enabled yes
cluster-node-timeout 5000
dir /opt/software/redis/cluster
appendonly yes
logfile "/opt/software/redis/redis-stable/cluster/redis6379.log"
cluster-config-file nodes-6379.conf

6.3 启动所有节点并创建集群

复制代码
# 启动节点
redis-server ./cluster/redis_6379.conf
redis-server ./cluster/redis_6380.conf

# 创建集群
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.conf
redis-cli shutdown
ps aux | grep redis

# 集群操作
redis-cli --cluster create ...
redis-cli cluster nodes
redis-cli -c

# 数据操作
keys *
set/get/del
auth 密码
info replication

八、部署建议与注意事项

部署方式 适用场景 优点 缺点
单机 开发、测试 简单快捷 无高可用,性能受限
主从 读多写少,数据备份 读写分离,数据冗余 故障需人工干预
哨兵 高可用,自动故障转移 自动切换,客户端透明 配置复杂,数据可能丢失
集群 大数据量,高并发,高可用 数据分片,水平扩展 部署复杂,运维成本高

8.1 安全建议

  • 生产环境务必设置密码

  • 使用防火墙限制访问IP

  • 定期备份RDB/AOF文件

8.2 性能调优建议

  • 根据内存使用情况选择合适的持久化方式

  • 合理设置 maxmemory 和淘汰策略

  • 监控慢查询与内存碎片


九、总结

Redis的部署方式多样,选择适合业务场景的方案至关重要:

  • 学习和开发可用单机

  • 小型项目可用主从+哨兵

  • 中大型高并发系统推荐集群

相关推荐
難釋懷4 小时前
Redis 通用命令
数据库·redis·缓存
hanqunfeng4 小时前
(九)Redis 命令及数据类型 -- Set
数据库·redis·bootstrap
编程大师哥5 小时前
如何在C++中使用Redis的事务功能?
开发语言·c++·redis
wregjru5 小时前
【C++】2.10智能指针详解
数据库·redis·mysql
2401_858286115 小时前
从Redis 8.4.0源码看快速排序(1) 宏函数min和swapcode
c语言·数据库·redis·缓存·快速排序·宏函数
hanqunfeng6 小时前
(一)Redis 7 + ACL 单节点、主从、哨兵、集群构建方法
redis
Codeking__7 小时前
Redis——事务
数据库·redis·缓存
Codeking__7 小时前
Redis——认识持久化、RDB、AOF
数据库·redis·缓存
什么都不会的Tristan8 小时前
redis-原理篇-QuickList
数据库·redis·缓存