写给大忙人的Redis主从复制,花费五分钟让你面试不尴尬

 一、什么是redis主从复制?主从复制就是现在有两台redis服务器,把一台redis的数据同步到另一台redis数据库上 。前者称之为主节点(master),后者为从节点(slave) 。数据是只能master往slave同步单向 。
但是在实际过程中是不可能只有俩台redis服务器来做主从复制的,这也就意味着每台redis服务器都有可能会成为主节点(master)
下图案例中,我们的slave3既是master的从节点,也是slave的主节点 。
先知道这么个概念,更多详解继续查看下文 。

写给大忙人的Redis主从复制,花费五分钟让你面试不尴尬

文章插图
 
二、为什么需要Redis主从复制?假设我们现在就一台redis服务器,也就是单机状态 。
在这种情况下会出现的第一个问题就是服务器宕机,直接导致数据丢失 。如果项目是跟¥占关系的,那造成的后果就可想而知 。
第二个情况就是内存问题了,当只有一台服务器时内存肯定会到达峰值的,不可能对一台服务器进行无限升级的 。
写给大忙人的Redis主从复制,花费五分钟让你面试不尴尬

文章插图
 
所以针对以上俩个问题,我们就多准备几台服务器,配置主从复制 。将数据保存在多个服务器上 。并且保证每个服务器的数据是同步的 。即使有一个服务器宕机了,也不会影响用户的使用 。redis可以继续实现高可用、同时实现数据的冗余备份 。
这会应该会有很多疑问,master跟slave怎么连接呢? 如何同步数据呢? 假如master服务器宕机了呢?别着急,一点一点解决你的问题 。
写给大忙人的Redis主从复制,花费五分钟让你面试不尴尬

文章插图
 
三、Redis主从复制的作用在上边我们说了为什么使用redis的主从复制,那么主从复制的作用就是针对为什么使用它来讲了 。
  1. 我们继续使用这个图来谈论
  2. 第一点是数据冗余了,实现了数据的热备份,是持久化之外的另一种方式 。
  3. 第二点是针对单机故障问题 。当主节点也就是master出现问题时,可以由从节点来提供服务也就是slave,实现了快速恢复故障,也就是服务冗余 。
  4. 第三点是读写分离,master服务器主要是写,slave主要用来读数据,可以提高服务器的负载能力 。同时可以根据需求的变化,添加从节点的数量 。
  5. 第四点是负载均衡,配合读写分离,有主节点提供写服务,从节点提供读服务,分担服务器负载,尤其在写少读多的情况下,通过多个从节点分担读负载,可以大大提高redis服务器的并发量和负载 。
  6. 第五点是高可用的基石,主从复制是哨兵和集群能够实施的基础,因此我们可以说主从复制是高可用的基石 。

写给大忙人的Redis主从复制,花费五分钟让你面试不尴尬

文章插图
 
四、配置Redis主从复制说了这么多,我们先简单的配置一个主从复制案例,然后在谈实现的原理 。
redis存储路径为:usr/local/redis
日志跟配置文件存储在:usr/local/redis/data
首先我们先配置俩个配置文件,分别为redis6379.conf 和 redis6380.conf
写给大忙人的Redis主从复制,花费五分钟让你面试不尴尬

文章插图
 
修改配置文件,主要就是修改端口 。为了查看方便在把日志文件和持久化文件的名字都用各自的端口来做标识 。
写给大忙人的Redis主从复制,花费五分钟让你面试不尴尬

文章插图
 
然后分别开启俩个redis服务,一个端口为6379,一个端口为6380 。执行命令redis-server redis6380.conf,然后使用redis-cli -p 6380连接,因为redis的默认端口就是6379所以我们启动另外一台redis服务器直接使用redis-server redis6379.conf 然后直接使用redis-cli直接连接就可以 。
写给大忙人的Redis主从复制,花费五分钟让你面试不尴尬

文章插图
 
这个时候我们就成功的配置了俩个redis服务,一台为6380,一台为6379,这里只是为了演示 。实际工作中是需要配置在两台不同的服务器的 。
写给大忙人的Redis主从复制,花费五分钟让你面试不尴尬

文章插图
 
1. 使用客户端命令行启动我们先得有一个概念,就是在配置主从复制时,所有的操作都是在从节点来操作,也就是slave 。
那么我们在从节点执行一个命令为 slaveof 127.0.0.1 6379,执行完就代表我们连接上了 。
写给大忙人的Redis主从复制,花费五分钟让你面试不尴尬

文章插图
 
我们先测试一下看是否实现主从复制 。在master这台服务器上执行俩个set kaka 123 和 set master 127.0.0.1,然后在slave6380端口是可以成功获取到的,也就说明我们的主从复制就已经配置完成了 。但是在实现生产环境可不是就这样完事了,后边会在进一步对主从复制进行优化,直到实现高可用 。


推荐阅读