什么是Redis主从复制

描述

Redis主从复制

来自灵魂的拷问:什么是Redis主从复制?

简言之就是:

  • 主对外从对内,主可写从不可写
  • 主挂了,从不可为主

看下面的图加深下理解:

架构

对,你没看错,Redis主从复制没有动态选举Master节点的能力,主挂了服务就不可以写数据了。仅仅就是增强了应用读数据的并发量同时做数据备份。

一般生产环境会采用 哨兵 或者 Redis Cluster 这种具备Master自动选举的方案,我们学习时还是要掌握主从的原理后,再去更深一步,对于哨兵和Redis Cluster方案感兴趣的话,可以留言告诉我,咱们后面安排上。

主从如何配置

接下来,我们实战一下redis的主从架构配置:

  • 主redis无需任何配置
  • 从机需要修改redis.conf文件中如下配置项
port 6378  # 如果是使用的一台机器注意端口要与主机不同
# slaveof < masterip > < masterport >
# 表示当前【从服务器】对应的【主服务器】的IP是192.168.10.135,端口是6379。
slaveof 192.168.137.6 6379

卧槽,你是不是想问:这么简单么?没错就是这么无情,但是这种事情一般代码越少,事情越大,实现原理是啥呀?怎么就可以主从复制了呢?

别慌,七哥,带大家好好缕一缕,整完去应付面试绝对是没有问题的。

实现原理

Redis从2.8版本开始,使用PSYNC命令代替SYNC命令来执行复制时的同步操作。因此本文只讲解目前采用PSYNC的同步原理。

PSYNC命令具有完整同步(full resynchronization)部分同步 (partial resynchronization)两种模式:

  • 其中完整同步用于处理初次复制情况:完整重同步的执行步骤是通过让主服务器创建并发送RDB文件,以及向从服务器发送保存在缓冲区里面的写命令来进行同步;
  • 而部分同步则用于处理断线后重复制情况:当从服务器在断线后重新连接主服务器时,如果条件允许,主服务器可以将主从服务器连接断开期间执行的写命令发送给从服务器,从服务器只要接收并执行这些写命令,就可以将数据库更新至主服务器当前所处的状态。

下图展示了主从服务器在执行部分重同步时的通信过程:

架构

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分