redis那点事4: 主从复制篇

本文深入探讨Redis的读写分离原理,包括主从复制、数据备份、分片模型及同步流程,解析集群如何提高效率与可用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

redis大纲: 

    传送

 

我们先来回顾一下redis集群的作用

    负载均衡: 通过主从复制进行读写分离, 提高数据的可用性, 这一句话就概括了集群, 本章我们就看看读写分离!

 

简单的说说主从复制的作用: 

    读写分离:  不仅可以提高服务器的效率, 而且可以根据请求的规模增加或减少从库

    数据备份:  数据备份到从机, 就算主机机器故障, 也会有其他从机顶上来

 

 简单的说说主从复制的模型:

     为了使部分节点挂掉或无法通信的情况下仍保证集群的可用性, 所以季芹使用了读写分离的模型, 

    每个节点都会有n-1个复制品, 保证了集群的高可用

 

简单的说说读写分离的模型: 

    可以增加Slave的数量, 读的性能会线行增长, 为了避免Master的单点故障 

    集群一般都有两个Master进行双机热备, 所以集群的读写效率都十分的高

    Salve负责读, 所以Salve的数量决定读的效率

    Master负责写, 所以Master的数量决定写的效率

 

简单的说说读写分离的缺陷:    

    读写分离架构的缺陷在于, 不管是Master还是Salve, 他们都要保存完整的数据

    如果在数据量很庞大的情况下, 集群的拓展能力还是受限于节点的存储能力

    对于写操作密集的程序 (Write-intensive), 读写分离并不适合

 

简单的说说redis的分片模型:

    为了解决读写分离的缺陷, 可以运用数据的分片模型

    将每个节点看做为一个Master, 通过业务来实现数据的分片

 

简单的说说读写分离的流程:

    1. 主库向从库发起 sync (同步) 命令 

    2. 主库接收到同步命令后会fork一个子进程, 这个子进程负责快照 (RDB文件) 的创建,

        在此之间, 所有的写命令都会缓存到积压缓冲区

    3. 当主库生成快照后会向从库发送快照以及积压缓冲区中的内容, 从库接收到数据会将数据载入

    4. 当主从复制完成后, 主库会将接收到写命令发送到从库

 

    主从复制流程图

            

 

简单的说说 INFO replication命令的作用:

    列出从服务器的列表, 可以看出最后一次向从服务器发送命令距离现在多少秒

 

简单的说说主从断连恢复后怎么进行数据的同步:

    在redis2.8以后 当主从断开后会根据最近命令的偏移量进行增量复制

    1. 当主从重连后, 从库会向主库发送 psync(id) 这个id是最近一条记录的ID

    2. 如果主库id和发来的从库id相同就证明没有新数据 完成同步操作

    3.  如果id不相同, 则会去找积压缓冲区的数据进行复制初始化

 

    同步流程图:

            

 

简单的说说什么是乐观复制: 

    这个有点像事务的最终一致性! !

    在redis主从复制的情况下, redis采用了乐观复制策略

    乐观复制就是容忍在一段时间内主从数据是不同的, 但是数据最终还是保持一致性

    

    具体的来说就是:

        redis主从复制本来就是异步执行的, 这就表明主程序写操作完成或会立马告诉客户端, 

        则不会等待从库的响应, 这个特性保证了性能不会受到影响, 但是可能会出现数据的不一致!

        当主机的数据已经改变, 主机同步到从机之前, 如果主从断连, 则会造成数据的不一致现象!

 

结束

  这就是我对redis读写分离篇的总结  感觉有用就点个赞吧 如果有错误或更好的方法评论区请多多指出  相互学习共同进步

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值