首页 > 应用开发 > Java > Redis进阶——详解Redis主从复制原理
Redis 的主从复制和 MySQL 差不多,主要起着 数据备份,读写分离等作用。所以说主从复制对 Redis 来说非常重要,而无论是面试还是工作总,了解 Redis主从复制 底层实现有非常有必要,那么接下来就和大家来看看 Redis 主从复制是怎么实现的吧。
在 Redis 中,我们可以通过 SLAVEOF 命令或者 slaveof 选项,让一个服务器去复制另一个服务器,被复制的服务器称为“ 主服务器”,发起复制的服务器称为“ 从服务器”,由两种服务器组成的模式称为“ 主从复制”。
Redis 主从复制有以下特点:
假设现在有两个 Redis 服务器,地址分别为 127.0.0.1:6379 和 127.0.0.1:12345,如果在服务器 127.0.0.1:12345 执行以下命令:
那么服务器
127.0.0.1:12345就是
127.0.0.1:6379 的从服务器。
主从服务器的数据会保持一致
比如主服务器存储数据:
然后从服务器就能直接获取数据:
删除数据也是一样,主从会保持一致。
首先,Redis 的复制分为 同步(sync)和 命令传播(command propagate)两个操作:
接下来详细说说这两种复制。
文字解说:
主从服务器同步成功后,并不会一致保持这个状态,主服务器可能会执行写命令,这也主从数据就不知一致了。
为了处理这种问题,
主服务器会把自己执行的写命令发送给从服务器,当从服务器执行完这些命令之后,主从服务器的数据就一致了。
在命令传播阶段,从服务器默认会以每秒一次的频率,向主服务器发送命令:
REPLCONF ACK <replication_offset>
<replication_offset> 是从服务器当前的复制偏移量。
发送 REPLCONF ACK 命令对于主从服务器有三个作用:
1.主服务器ID:用于标识一个服务器。
ID 在服务器启动时生成,由 40 个随机的十六进制字符组成。
2.复制积压缓冲区:复制积压缓冲区是由主服务器维护的一个固定长度、先进先出(FIFO)队列,默认大小为 1MB。如下:
Redis 主从复制主要是通过 PSYNC 命令实现。
复制分为
部分复制 以及
完整复制。
部分复制通过 复制偏移量、复制积压缓冲区、服务器ID来实现。
完整复制通过 RDB 以及 复制积压缓冲区来实现。
主从复制主要解决的是 数据备份、读写分离的问题。
最近我整理了整套 《JAVA核心知识点总结》,说实话 ,作为一名Java程序员,不论你需不需要面试都应该好好看下这份资料。拿到手总是不亏的~我的不少粉丝也因此拿到腾讯字节快手等公司的Offer
进 【 Java进阶之路群】,找管理员获取哦-!
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70000438/viewspace-2778703/ ,如需转载,请注明出处,否则将追究法律责任。