一、Redis简介与部署方式概览
Redis是一款高性能的键值存储系统,支持多种数据结构,常用于缓存、消息队列、分布式锁等场景。根据不同的可用性、扩展性与性能需求,Redis提供了四种常见部署模式:
-
单机部署:适合开发、测试环境,简单快捷。
-
主从部署:实现数据冗余与读写分离,提升读取性能。
-
哨兵部署:在主从基础上实现自动故障转移,提高可用性。
-
集群部署:支持数据分片与高可用,适合大规模、高并发场景。
下面将逐步讲解每种部署方式的安装、配置与操作。
二、环境准备(通用步骤)
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 故障模拟与恢复
-
停止主节点
-
观察哨兵日志,查看新主节点选举
-
重启原主节点,观察是否变为从节点
六、集群部署(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的部署方式多样,选择适合业务场景的方案至关重要:
-
学习和开发可用单机
-
小型项目可用主从+哨兵
-
中大型高并发系统推荐集群