Redis主从模式(一) 搭建主从结构并演示

目录

一, 主从模式

1.1 单个Redis服务器可能存在的问题

1.2 单点问题

1.3 什么是主从模式

概念

图示

二, 演示Redis的主从复制

2.1 Redis-server进程

2.2 建立复制

1. 首先将redis.conf配置文件复制一份并修改daemonize 为 yes

2.修改配置文件中的端口号 

3. 分别在两个配置文件中加上主从结构的配置

 2.3 启动进程并查看

1. 分别启动三个Redis-server进程

 2. 查看3个节点的网络情况

3. 查看复制状态

2.3 演示主从复制

1. 从节点读取主节点的数据

2. 从节点不能修改数据

2.4 断开复制 


Redis主从模式(二)---拓扑结构及复制过程:Redis主从模式(二)---拓扑结构及复制过程-CSDN博客

一, 主从模式

1.1 单个Redis服务器可能存在的问题

Redis是一个内存数据库,主要用途是作为缓存存放热点数据从而降低MySQL的压力,大多数用于分布式系统;如果在并发量非常大的情况下,所有的请求都只访问一个Redis服务器的话,Redis服务器很容易发生宕机,从而导致数据丢失或者访问出错的情况,所以单个Redis服务在高并发环境下可能存在的问题有如下:

  • 如果服务器发生了宕机,由于数据恢复是需要点时间的,那么这个期间是无法服务新的请求的;
  • 如果这服务器的硬盘出现了故障,可能数据就都丢失了.

1.2 单点问题

上述单个Redis服务器可能存在的问题我们一般称为单点问题:指某个服务器程序只有一个节点(即只搞一个物理服务器来部署这个服务器程序),所以需要引入分布式系统来解决上述问题,再分布式系统中往往希望有多个服务器来部署Redis系统,从而构成一个Redis集群,此时这个集群给整个分布式系统服务,提供更稳定的/更高效的数据存储功能.

分布式系统中,希望使用多个服务器来部署Redis,存在以下几种Redis的部署方式:

  1. 主从模式(这篇博客详细说明)
  2. 主从模式+哨兵模式(后续讲解)
  3. 集群模式(后续讲解)

1.3 什么是主从模式

概念

主从模式针对于多个Redis节点来说,通常包括一个主节点和多个从节点,从节点的数据和主节点的数据保持一致,同时主节点的数据发生改变会实时更新到从节点,换而言之,从节点就是主节点的副本.

Redis主从模式下,默认名从节点不可以对数据进行修改(也可以在配置文件中修改,一般不修改),只能读取数据.

图示

  1.  从节点的数据是从主节点来的,从节点是主节点的一份副本;
  2. 主节点既支持读操作也支持写操作,但是从节点只能支持读操作;
  3. 正因为从节点支持读操作,从而增大了Redis服务器的并发量(因为Redis服务器的读操作往往远大于写操作).

注意:如果某一时刻从节点挂了,对Redis集群没啥影响,因为此时可以继续从主节点或者其他从节点读取数据,得到的效果完全相同;如果挂掉的主节点,此时这个Redis集群只能提供读操作不能提供写操作了,Redis存储的数据将不会得到更新.

二, 演示Redis的主从复制

2.1 Redis-server进程

配置Redis主从结构,首先需要启动多个服务器,正常来说,每个Redis服务器程序应该放在一个单独的主机上(也就是分布式),但是对于我们来说,只有一个云服务器,所以可以在一个云服务器上运行多个Redis-server进程(这里把每个进程当成一个单独的Redis服务器程序).

如何保证一个云服务器上运行多个Redis-server进程呢?本来的Redis-server默认的端口是6379,此时就需要保证多个Redis-server的端口是不同的,然后在启动每个Redis-server的时候使用不同的端口号进行启动.

2.2 建立复制

假设我们这里打算弄一个主节点两个从节点(主节点的端口号是6379,另外两个从节点的端口号是6380,6381).

配置复制的方式有以下三种:

  1. 在配置⽂件中加⼊ slaveof {masterHost} {masterPort} 随 Redis 启动⽣效(这里演示这种);
  2. 在 redis-server 启动命令时加⼊ --slaveof {masterHost} {masterPort} ⽣效;
  3. 直接使⽤ redis 命令:slaveof {masterHost} {masterPort} ⽣效.

1. 首先将redis.conf配置文件复制一份并修改daemonize 为 yes

2.修改配置文件中的端口号 

           

3. 分别在两个配置文件中加上主从结构的配置

这个配置的意思就是从属于127.0.0.1 6379这个节点(即自己作为该节点的从节点)

 2.3 启动进程并查看

1. 分别启动三个Redis-server进程

启动主节点

 启动从节点

 2. 查看3个节点的网络情况

使用命令 netstat -anp | grep redis-server 进行查看

通过命令可以查看到6个tcp连接,其中上面3个表示3个redis-server服务器连接,下面4个可以分成两组,分别表示每个从节点和主节点之间的tcp连接.

3. 查看复制状态

可以通过命令 info replication 分别查看主节点和从节点的复制状态

2.3 演示主从复制

1. 从节点读取主节点的数据

2. 从节点不能修改数据

2.4 断开复制 

slaveof 命令不但可以建⽴复制,还可以在从节点执⾏ slaveof no one 来断开与主节点复制关系。 例如在 6380 节点上执⾏ slaveof no one 来断开复制.

断开复制的主要流程:

  1. 断开与主节点复制关系
  2. 从节点晋升成主节点

从节点断开复制后并不会抛弃原有的数据,只是无法再获取主节点的数据变化.

 通过 slaveof 命令还可以实现切主操作,将当前从节点的数据源切换到另⼀个主节点。执⾏ slaveof {newMasterIp} {newMasterPort} 命令即可.

切主操作的主要流程:

  1. 断开与旧主节点复制关系
  2. 与新主节点建立复制关系
  3. 删除从节点当前所有数据
  4. 从新主节点进行复制操作

假设把这里端口号为6380的节点的主节点从6379切换到6381:

 此时节点之间的关系如图所示:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值