Redis进阶 - 精简版
---
Redis哨兵(Sentinel)
什么是哨兵
哨兵(Sentinel)是一个独立的进程,用于监控Redis主从节点的状态。当主节点宕机时,哨兵会自动将从节点切换为主节点,实现故障转移。
哨兵的作用
- 监控:通过发送命令,让Redis服务器返回监控其运行状态
- 故障转移:当master宕机,自动将slave切换成master
- 通知:通过发布订阅模式通知其他从服务器和客户端
故障转移流程
1. 主观下线(SDOWN):单个哨兵检测到主节点不可用 2. 客观下线(ODOWN):多数哨兵确认主节点故障 3. 选举Leader哨兵:投票选出负责执行故障切换的哨兵 4. 执行Failover:选择最优从节点提升为新主节点 5. 通知客户端:广播主节点变更信息
部署一主两从+三哨兵
# 安装Redis
wget https://download.redis.io/releases/redis-8.4.0.tar.gz
tar -zxvf redis-8.4.0.tar.gz
cd redis-8.4.0
make && make PREFIX=/usr/local/redis install命令作用:
- 访问
https://download.redis.io/releases/redis-8.4.0.tar.gz;curl默认把响应写到终端,wget默认下载到文件。可据 HTTP 状态、响应内容或下载结果判断服务是否可访问。
- 按选项打包或解包归档文件;
-c表示创建归档,-x表示解包,-f后面指定归档文件名。
执行结果:
- 成功后目标文件会下载到当前目录或
-O指定的位置。
- 成功后会生成归档文件或把归档内容解压到目标目录;用
tar -tf 归档文件可查看归档内容。
关键参数:
注意事项:
安装Redis:
**注意事项:**注意事项:
**命令拆解:**
| 命令部分 | 重要程度 | 详细解释 |
|---|---|---|
| `./redis-server` | 【普通】 | `./redis-server` 是这行命令的主程序,决定这条命令要调用哪个工具。 |
| `../cluster/7000/redis.conf` | 【普通】 | 配置文件路径,命令会读取这个文件里的配置。 |
| `../cluster/7001/redis.conf` | 【普通】 | 配置文件路径,命令会读取这个文件里的配置。 |
| `../cluster/7002/redis.conf` | 【普通】 | 配置文件路径,命令会读取这个文件里的配置。 |
**注意事项:**命令拆解:
| 命令部分 | 重要程度 | 详细解释 |
|---|---|---|
./redis-cli | 普通 | ./redis-cli 是这行命令的主程序,决定这条命令要调用哪个工具。 |
注意事项:
查看集群状态:
**命令拆解:**
| 命令部分 | 重要程度 | 详细解释 |
|---|---|---|
| `./redis-cli` | 【普通】 | `./redis-cli` 是这行命令的主程序,决定这条命令要调用哪个工具。 |
| `-p` | 【核心】 | `-p` 的含义取决于当前命令,不能直接套用 Docker 端口映射解释。 |
**注意事项:**cluster_state:ok cluster_slots_assigned:16384 cluster_slots_ok:16384 cluster_known_nodes:6 cluster_size:3
---
| 特性 | 哨兵 | 集群 |
|---|---|---|
| 架构 | 1主多从 | 多主多从 |
| 数据分片 | 不支持 | 支持(16384个slot) |
| 水平扩展 | 不支持 | 支持 |
| 最少节点 | 3个 | 6个 |
| 适用场景 | 中小型项目 | 大型项目、高并发 |