96SEO 2026-02-20 03:00 0
。

Redis#xff0c;作为一个开源的、内存中的数据结构存储系统#xff0c;以其出色的性能和灵活的数据结构#xff0c;赢得了开发者们的广泛喜爱。
而
在现代的软件开发中数据的可靠性和可用性是至关重要的。
Redis作为一个开源的、内存中的数据结构存储系统以其出色的性能和灵活的数据结构赢得了开发者们的广泛喜爱。
而
的主从复制功能更是为我们提供了一种简单有效的方式来提高数据的可靠性和可用性。
今天我们要探讨的是
主从复制集群是一种常见的数据库集群架构它包含一个主服务器和多个从服务器。
主服务器负责处理写操作所有的写操作会被复制到从服务器。
从服务器主要用于处理读操作分担读负载。
通过这种方式我们可以在多台服务器上读取相同的数据提高读取性能同时也可以防止数据丢失。
的主从复制集群包括它的工作原理如何搭建和配置以及一些常见的使用场景。
无论你是刚接触
Redis还是已经有一定的使用经验我相信你都能从这篇文章中学到一些新的知识。
1、Redis主从复制介绍1.1、Redis主从复制概述1.2、Redis主从复制作用1.3、Redis主从拓扑结构1.4、Redis主从的不足
2、Redis主从复制原理2.1、Redis主从复制流程2.2、Redis主从复制同步数据集流程2.3、Redis主从复制的断线重连
3、Redis主从复制数据同步方式3.1、Redis主从全量复制3.2、Redis主从部分复制
4、Redis主从复制实现4.1、拉取Redis镜像4.2、创建所需文件夹4.3、运行容器4.4、实现主从同步-临时-查询主节点节点ip4.5、实现主从同步-临时-修改从节点配置4.6、实现主从同步-临时-查看主节点信息4.7、实现主从同步-临时-查看从节点信息4.8、实现主从同步-永久-相关配置修改4.9、实现主从同步-永久-重启查看
数据备份和高可用性的重要机制之一。
主从复制允许你有一个或多个从服务器复制主服务器的数据。
这样你可以在多个服务器上读取相同的数据提高读取性能同时也可以防止数据丢失。
命令来配置从服务器。
这将使从服务器开始监听主服务器准备复制数据。
命令它将开始一个同步过程。
在这个过程中主服务器会创建一个当前数据的快照并将其发送给从服务器。
命令复制数据同步完成后主服务器会继续在接收到写命令时将其发送给所有从服务器。
这样所有的从服务器都能实时地保持和主服务器一致的数据。
读取数据你可以配置应用程序从从服务器读取数据以此来分担主服务器的读取负载。
主从复制实现了数据的热备份是持久化之外的一种数据冗余方式。
故障恢复
在主从复制的基础上配合读写分离可以由主节点提供写服务由从节点提供读服务
数据时应用连接从节点分担服务器负载。
尤其是在写少读多的场景下通过多个从节点分担读负载可以大大提高
除了上述作用以外主从复制还是哨兵和集群能够实施的基础因此说主从复制是
的复制拓扑结构可以支持单层或多层复制关系根据拓扑复杂性可以分为以下三种一主一从、一主多从、树状主从结构。
一主一从结构是最简单的复制拓扑结构用于主节点出现宕机时从节点提供故障转移支持一主多从结构又称为星形拓扑结构使得应用端可以利用多个从节点实现读写分离。
对于读占比较大的场景可以把读命令发送到从节点来分担主节点压力树状主从结构又称为树状拓扑结构使得从节点不但可以复制主节点数据同时可以作为其他从节点的主节点继续向下层复制。
通过引入复制中间层可以有效降低主节点负载和需要传送给从节点的数据量
一旦主节点出现故障需要手动将一个从节点晋升为主节点同时需要修改应用方的主节点地址还需要命令其他从节点去复制新的主节点整个过程都需要人工干预主节点的写能力和存储能力受到单机的限制
保存主节点master信息这一步只是保存主节点信息保存主节点的
port主从建立连接从节点slave发现新的主节点后从节点会向主节点发送一个同步命令SYNC来尝试和主节点建立连接发送
g命令连接建立成功后从节点发送ping请求进行首次通信主要是检测主从之间网络套接字是否可用、主节点当前是否可接受处理命令。
权限验证如果主节点要求密码验证从节点必须正确的密码才能通过验证同步数据集主从复制连接正常通信后主节点会把持有的数据全部发送给从节点命令持续复制
同步数据集的主要步骤就是发送和加载数据快照。
具体来说包括以下步骤
主服务器生成数据快照当主服务器接收到从服务器的同步请求后会开始在后台生成一个数据快照RDB
文件。
这个数据快照包含了主服务器在接收到同步请求时的所有数据。
主服务器发送数据快照数据快照生成后主服务器会将这个快照文件发送给从服务器。
同时主服务器还会将生成数据快照期间接收到的所有写命令缓存起来。
从服务器加载数据快照从服务器接收到数据快照后会清空旧数据然后加载这个数据快照。
这样从服务器的数据就和主服务器在生成数据快照时的数据一致了。
主服务器发送缓存的写命令数据快照发送完毕后主服务器会将生成数据快照期间缓存的写命令发送给从服务器。
从服务器执行这些写命令后就和主服务器的当前数据状态一致了。
使用了一种叫做部分重同步PSYNC的机制可以使得在网络连接断开后从服务器只需要复制断开期间主服务器上发生变化的部分而不需要重新复制所有数据大大提高了复制的效率。
主从复制过程中如果主从服务器之间的连接断开从服务器会尝试重新连接主服务器并重新开始同步过程。
具体来说包括以下步骤
检测连接断开从服务器会定期检测与主服务器的连接状态。
如果检测到连接已经断开从服务器会尝试重新连接主服务器。
重新连接主服务器从服务器会尝试重新连接主服务器。
如果连接失败从服务器会在一段时间后再次尝试直到连接成功。
请求同步一旦重新连接成功从服务器会向主服务器发送一个同步请求。
这个请求会告诉主服务器从服务器需要的数据的起始位置。
部分重同步如果可能主服务器会进行部分重同步。
也就是说主服务器只会发送从服务器缺失的数据而不是所有数据。
这是通过在主服务器上维护一个缓冲区实现的这个缓冲区保存了最近的写命令。
如果从服务器请求的数据都在这个缓冲区内主服务器就可以进行部分重同步。
全量重同步如果部分重同步无法进行例如缓冲区的数据已经被覆盖或者从服务器是第一次进行同步主服务器就会进行全量重同步。
也就是说主服务器会发送所有数据给从服务器。
早期支持的复制功能只有全量复制它会把主节点全部数据一次性发送给从节点当数据量较大时会对主从节点和网络造成很大的开销。
命令进行数据同步由于是第一次进行复制从节点没有复制偏移量和主节点的运行ID所以发送
快照到接收完成期间主节点仍然响应读写命令因此主节点会把这期间写命令数据保存在复制客户端缓冲区内当从节点加载完
文件后主节点再把缓冲区内的数据发送给从节点保证主从之间数据一致性从节点接收完主节点传送来的全部数据后会清空自身旧数据从节点清空数据后开始加载
命令实现。
当从节点slave正在复制主节点master时如果出现网络闪断或者命令丢失等异常情况时从节点会向主节点要求补发丢失的命令数据如果主节点的复制积压缓冲区内存在这部分数据则直接发送给从节点这样就可以保持主从节点复制的一致性。
时间主节点会认为从节点故障并中断复制连接主从连接中断期间主节点依然响应命令但因复制连接中断命令无法发送给从节点不过主节点内部存在的复制积压缓冲区依然可以保存最近一段时间的写命令数据默认最大缓存
当主从连接恢复后由于从节点之前保存了自身已复制的偏移量和主节点的运行
在自身复制积压缓冲区查找如果偏移量之后的数据存在缓冲区中则对从节点发送
响应表示可以进行部分复制主节点根据偏移量把复制积压缓冲区里的数据发送给从节点保证主从复制进入正常状态。
~/data/redis/master/redis.confmkdir
~/data/redis/slave-1/redis.confmkdir
~/data/redis/slave-1/redis.conf
~/data/redis/slave-2/redis.confmkdir
~/data/redis/slave-2/redis.conf
~/data/redis/master/data/:/data
~/data/redis/master/redis.conf:/etc/redis/redis.conf
~/data/redis/slave-1/data/:/data
~/data/redis/slave-1/redis.conf:/etc/redis/redis.conf
~/data/redis/slave-2/data/:/data
~/data/redis/slave-2/redis.conf:/etc/redis/redis.conf
命令的作用就是获取指定容器的详细信息包括容器的配置、网络设置、挂载的卷等等。
这个命令返回的是一个
--tty表示分配一个伪终端。
这两个选项通常一起使用可以让你交互地运行命令。
[CONTAINER
replication4.7、实现主从同步-临时-查看从节点信息
replication4.8、实现主从同步-永久-相关配置修改
以守护进程的方式运行就是关闭了远程连接窗口redis依然运行,使用容器时必须注释,否则启动容器失败
设置主节点的密码(当主节点设置了requirepass配置时需要配置该项或者需要搭建哨兵模式的时候也需要配置该项因为如果主节宕机重启之后就会#
装换为slave节点这个时候需要去连接sentinel选举出来的新的master节点)
~/data/redis/slave-1/redis.conf#
以守护进程的方式运行就是关闭了远程连接窗口redis依然运行,使用容器时必须注释,否则启动容器失败
设置主节点的密码(当主节点设置了requirepass配置时需要配置该项)
主从模式下主节点的IP和PORT(这里要根据实际情况来定我这里使用的是容器内部的IP和端口
这里也可以使用容器的名称使用容器名称的时候在构建容器的时候就需要使用--link参数
这里也可以使用物理地址使用物理地址的时候在构建容器的时候就需要使用--net参数
/data/redis/slave-2/redis.conf#
以守护进程的方式运行就是关闭了远程连接窗口redis依然运行,使用容器时必须注释,否则启动容器失败
设置主节点的密码(当主节点设置了requirepass配置时需要配置该项)
主从模式下主节点的IP和PORT(这里要根据实际情况来定我这里使用的是容器内部的IP和端口
这里也可以使用容器的名称使用容器名称的时候在构建容器的时候就需要使用--link参数
这里也可以使用物理地址使用物理地址的时候在构建容器的时候就需要使用--net参数
redis-slave-2验证是否搭建成功这里我们看一下主节点
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback