1. Redis环境准备与单机部署
1.1 系统环境检查与依赖安装
在CentOS 7上部署Redis前,需要先确认基础环境。执行以下命令检查系统版本和内核信息:
bash复制cat /etc/redhat-release
uname -r
Redis运行需要gcc编译环境,建议安装开发工具组:
bash复制yum groupinstall "Development Tools" -y
yum install tcl -y # Redis测试套件依赖
注意:生产环境建议禁用透明大页(THP),可能引起Redis延迟问题。通过以下命令临时禁用:
bash复制echo never > /sys/kernel/mm/transparent_hugepage/enabled如需永久生效,可添加到/etc/rc.local
1.2 Redis源码编译安装
推荐使用稳定版Redis源码编译安装(以6.2.6为例):
bash复制wget https://download.redis.io/releases/redis-6.2.6.tar.gz
tar xzf redis-6.2.6.tar.gz
cd redis-6.2.6
make && make install
编译完成后关键文件位置:
- 可执行文件:/usr/local/bin/redis-*
- 默认配置文件:/etc/redis.conf
- 数据目录:/var/lib/redis
1.3 单机模式配置优化
修改redis.conf关键参数:
ini复制daemonize yes
bind 0.0.0.0
protected-mode no
dir /var/lib/redis
maxmemory 2gb
maxmemory-policy allkeys-lru
appendonly yes
创建systemd服务管理:
ini复制# /etc/systemd/system/redis.service
[Unit]
Description=Redis In-Memory Data Store
After=network.target
[Service]
User=redis
Group=redis
ExecStart=/usr/local/bin/redis-server /etc/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always
[Install]
WantedBy=multi-user.target
启动并验证服务:
bash复制mkdir /var/lib/redis
chown redis:redis /var/lib/redis
systemctl daemon-reload
systemctl start redis
redis-cli ping # 应返回PONG
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Redis哨兵模式高可用部署
2.1 哨兵架构设计要点
典型哨兵部署需要至少3个节点(1主2从+3哨兵),拓扑结构如下:
code复制主节点: Redis-Master (写入)
从节点: Redis-Slave1, Redis-Slave2 (读取+故障转移)
哨兵节点: Sentinel1, Sentinel2, Sentinel3 (监控与自动故障转移)
2.2 主从复制配置
在主节点redis.conf中确保:
ini复制requirepass your_master_password
masterauth your_master_password
在从节点配置:
ini复制replicaof <master-ip> 6379
masterauth your_master_password
requirepass your_slave_password
验证主从同步:
bash复制redis-cli -h <master> info replication
# 应显示connected_slaves:2
2.3 哨兵节点配置
每个哨兵节点的sentinel.conf关键配置:
ini复制port 26379
sentinel monitor mymaster <master-ip> 6379 2
sentinel auth-pass mymaster your_master_password
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1
启动哨兵服务:
bash复制redis-sentinel /etc/sentinel.conf --sentinel
2.4 哨兵模式验证测试
- 手动停止主节点Redis服务
- 观察哨兵日志,约30秒后应完成故障转移
- 检查新的主节点信息:
bash复制redis-cli -p 26379 sentinel get-master-addr-by-name mymaster
实际踩坑:网络分区时可能出现"脑裂",建议设置合理的down-after-milliseconds值(通常为5-30秒)
3. Redis集群模式部署
3.1 集群规划与准备
Redis集群需要至少3主3从共6个节点,每个节点需要:
- 单独的配置文件
- 独立的端口(通常7001-7006)
- 开启集群模式
创建集群目录结构:
bash复制mkdir -p /redis/cluster/{7001..7006}
3.2 节点配置模板
每个节点的redis.conf基础配置:
ini复制port 7001
cluster-enabled yes
cluster-config-file nodes-7001.conf
cluster-node-timeout 5000
appendonly yes
daemonize yes
pidfile /var/run/redis_7001.pid
dir /redis/cluster/7001
3.3 集群创建与验证
启动所有节点后,使用redis-cli创建集群:
bash复制redis-cli --cluster create \
192.168.1.101:7001 192.168.1.102:7002 192.168.1.103:7003 \
192.168.1.104:7004 192.168.1.105:7005 192.168.1.106:7006 \
--cluster-replicas 1
验证集群状态:
bash复制redis-cli -c -p 7001 cluster nodes
redis-cli -c -p 7001 cluster info
3.4 集群运维关键命令
添加新节点:
bash复制redis-cli --cluster add-node new_host:7007 existing_host:7001
重新分片:
bash复制redis-cli --cluster reshard existing_host:7001
修复故障节点:
bash复制redis-cli --cluster fix host:port
4. 生产环境优化与监控
4.1 性能调优参数
ini复制# 网络相关
tcp-backlog 511
timeout 0
tcp-keepalive 300
# 内存管理
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
activerehashing yes
# 持久化优化
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
4.2 安全加固措施
- 启用密码认证:
ini复制
requirepass complex_password - 禁用危险命令:
ini复制
rename-command FLUSHDB "" rename-command CONFIG "" - 网络隔离:
ini复制
bind 内网IP
4.3 监控方案实施
推荐监控指标:
- 内存使用率
- 连接数
- 命中率
- 持久化状态
- 集群节点状态
使用Prometheus+Granafa监控方案:
bash复制# 安装redis_exporter
wget https://github.com/oliver006/redis_exporter/releases/download/v1.30.0/redis_exporter-v1.30.0.linux-amd64.tar.gz
tar xzf redis_exporter-*.tar.gz
./redis_exporter -redis.addr redis://localhost:6379 -redis.password 'your_password'
4.4 常见故障处理
案例1:主从同步失败
- 检查网络连通性
- 验证masterauth配置
- 查看主节点日志是否有连接拒绝
案例2:集群节点不可用
- 检查集群节点状态:
cluster nodes - 手动修复:
cluster meet - 必要时进行故障转移
案例3:内存溢出
- 检查maxmemory策略
- 分析大key:
redis-cli --bigkeys - 优化数据结构使用
