Redis(十四) 主从模式

在这里插入图片描述

前言

Redis 作为在内存中操作数据的服务器系统,每时都会接收成千上万的请求,如果我们的业务只在单个服务器上面部署了 Redis,那么这个 Redis 服务器很可能会因为过多的业务处理而导致服务器挂掉,而这个单独的 Redis 服务器如果挂掉的话,那么所有关于 Redis 修改和查询的操作都无法正常进行。所以为了解决这个问题,我们引入了分布式系统这个概念。

什么是分布式系统

分布式系统由一组独立的计算机组成,这些计算机在地域上可能分散在世界各地,但通过网络连接形成一个统一的系统。这个系统具有多种通用的物理和逻辑资源,并能动态地分配任务。分散的物理和逻辑资源通过计算机网络实现信息交换。

分布式系统的主要特点:

  1. 分布性:整个系统的功能分散到各个计算机(节点)上实现,因此具有数据处理的分布性。
  2. 自治性:系统中的各个节点都包含自己的处理器与内存,地位上彼此平等,无主次之分,既能自治工作,也能通过网络来共享信息,协调处理任务。
  3. 并行性:一个大的任务可以分成若干个小任务,分发到不同的主机上运行。
  4. 全局性:系统中必须存在一个单一的、全局的进程通信机制,使得任意一个进程都能与其他进程相互通信,并且不区分本地通信与远程通信。

Redis 实现分布式主要有三种方式:主从模式、主从模式+哨兵模式和集群模式。这篇文章主要介绍主从模式。

主从模式

Redis 主从模式是在众多个 Redis 节点中,既有主节点又有从节点,主节点可以进行写操作也可以进行读操作,而从节点则只能进行读操作。当主节点中的数据修改了之后,从节点中的数据也会跟着变化,保持与主节点的数据一致。

当用户进行写操作的时候,这个操作只会在主节点中进行,然后将修改之后的数据同步到从节点中,而用户进行读操作的时候,则可以在主节点和从节点中的任何一个节点中进行,这样就使得每个 Redis 服务器的读操作的压力大大降低了。虽然写操作还是在一台服务器上的,但是 Redis 操作最多的还是读操作,相较于服务器承受的读操作的压力,写操作的压力还是可以承受的。

如果 Redis 从节点的服务器挂掉了,影响不大,因为其他的从节点和主节点还可以进行读操作,只是说服务器的压力可能大一点,而如果 Redis 主节点的服务器挂掉了,那么影响还是比较大的,因为只有主节点才可以进行写操作,主节点挂掉了就意味着无法修改数据了,但是暂时的读操作还是可以的,这个主节点挂掉的情况是有解决方式的,后面再为大家介绍。

在这里插入图片描述

实现Redis主从模式

按理来说,配置 Redis 主从模式应该是每个 Redis 节点在不同的主机上的,但是因为我这里资源有限,所以就在一个主机上为大家模拟出多个 Redis 节点的 Redis 主从模式的情况。

那么在一个主机上如何实现多个 Redis 节点的情况呢?Redis 服务器默认使用的端口号是 6379,我们只需要再添加几个除 6379 之外的其他端口作为 Redis 服务器使用的端口号就可以了。而修改 Redis 启动的端口号就需要在 Redis 的配置文件中进行配置:

首先我们需要将三个 redis 服务器的工作目录进行区分,防止工作目录重复而导致的 RDB 文件或者 AOF 文件重复,再而导致某一个 Redis 服务器无法正常启动。

首先准备三个配置文件来作为三个 Redis 服务器启动的配置文件:

root@iZ2ze5bzkbeuwwqowjzo27Z:/etc/redis# cp redis1.conf redis2.conf
root@iZ2ze5bzkbeuwwqowjzo27Z:/etc/redis# cp redis1.conf redis3.conf
root@iZ2ze5bzkbeuwwqowjzo27Z:/etc/redis# ll
total 344
drwxrws---   2 redis redis  4096 May  1 16:49 ./
drwxr-xr-x 118 root  root   4096 Apr 27 06:31 ../
-rw-r-----   1 root  redis 85843 May  1 16:48 redis1.conf
-rw-r-----   1 root  redis 85843 May  1 16:49 redis2.conf
-rw-r-----   1 root  redis 85843 May  1 16:49 redis3.conf
-rw-r-----   1 root  redis 85846 May  1 16:47 redis.conf

修改配置文件中的使用端口号,这里主节点默认使用 6379 端口号:

在这里插入图片描述

当修改完端口号之后还需要 daemonize 配置,按照后台进程的方式来运行:

在这里插入图片描述

在这里插入图片描述

然后启动 Redis 服务的时候通过执行配置文件 redis-server 配置文件路径 的方式来启动:

root@iZ2ze5bzkbeuwwqowjzo27Z:/etc/redis# service redis-server stop
root@iZ2ze5bzkbeuwwqowjzo27Z:/etc/redis# ps aux | grep redis
root      513119  0.0  0.1   6480  2416 pts/0    
### Redis 主从模式下的主从切换 在Redis主从模式中,当主节点发生故障时,为了保持系统的持续运行和服务的高可用性,通常会采用自动或手动的方式进行主从切换。对于自动化的主从切换,推荐使用Redis Sentinel来监控集群状态并执行必要的操作。 #### 使用命令行工具实现基本的手动主从切换 可以通过`redis-cli`命令让指定的从服务器成为新的主服务器: ```bash # 将IP地址为192.168.10.1端口为6379的实例设置为主机 redis-cli -p 6380 SLAVEOF 192.168.10.1 6379 [^2] ``` 此方法适用于临时性的调整或是测试环境中的简单场景,在生产环境中则建议依赖更完善的解决方案如Redis Sentinel来进行自动化管理。 #### 利用Redis Sentinel 实现自动化的主从切换 启动哨兵(Sentinel)程序之前先要确保有至少三个以上的Sentinel进程用于达成多数协议机制,从而提高决策准确性。以下是具体的操作流程: - 配置文件准备阶段:分别为Master、Slave以及每个Sentinel创建对应的配置文件; - 启动各个组件的服务: ```bash # 启动Redis主节点 redis-server /path/to/redis.conf # 启动Redis从节点 redis-server /path/to/slave.conf # 启动Sentinel redis-sentinel /path/to/sentinel.conf [^3] ``` 一旦某个被监视的master被认为不可达,并且大多数sentinels同意这一判断,则其中一个sentinel会被选出来负责选举一个新的master(通常是当前slave中最适合的一个),并将其他slaves重新指向新选出的master。整个过程无需人工干预即可完成,大大增强了系统的稳定性和可靠性。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不能再留遗憾了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值