Redis——主从复制与发布订阅

Redis——主从复制与发布订阅


仅作为笔记,码字不易,转载请标明出处。


前言

仅作为笔记


一、主从复制

1.1 概述

  • Redis 的高可用方案包括:持久化主从复制哨兵集群。其中持久化侧重解决的是 Redis数据的单机备份问题;主从复制则侧重解决数据的多机热备,此外,主从复制还可以实现负载均衡和故障恢复
  • 主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节(master),后者称为从节点(slave);数据的复制是单向的,只能由主节点到从节点。默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。

1.2 主从复制的作用

  • 数据冗余:主从复制实现数据的热备份,是持久化之外的一种数据冗余方式
  • 故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复,实际上是一种服务的冗余
  • 负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务分担服务器负载;尤其是读多写少的情况下,通过多个节点分担读负载,大大提高Redis服务器的负载能力。
  • 高可用基石主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础

1.3 实现原理

主从复制分为完整同步部分重同步两种模式

  • 完整同步:用于处理初次复制的情况,通过让主服务器创建并发送RDB文件以及向从服务器发送保存在缓冲区的写命令来进行同步。
    1)从节点判断无法进行部分复制,向主节点发送全量复制的请求;或从节点发送部分复制的请求,但主节点判断无法进行部分复制
    2)主节点收到全量复制命令后,执行 bgsave ,在后台生成 RDB文件,并使用一个缓冲区记录从现在开始执行的所有写命令
    3)主节点的bgsave命令完成后,将 RDB文件发送给从节点;从节点首先清除自己的旧数据,然后载入接收的 RDB 文件,将数据库状态更新至主节点执行 bgsave时的数据库状态
    4)主节点将前述复制缓冲区的所有写命令发送给从节点,从节点执行这些写命令,将数据库状态更新至主节点的最新状态
    5)如果从节点开启了 AOF ,则会触发 bgrewriteaof 的执行,从而保证 AOF 文件更新至主节点的最新状态
    在这里插入图片描述

  • 部分重同步:重同步是用于处理断线后重复值的情况,只将中断期间主节点执行的写命令发送给从节点,与全量复制相比更加高效。需要注意的是,如果网络中断时间过长,导致主节点没有能够完整的保存中断期间执行的写命令,则无法进行部分复制,仍使用全量复制。

  • 心跳机制:在命令传播阶段,从服务器默认会以每秒一次的频率,向主服务器发送命令达到以下目的。
    1)检测主从服务器的网络连接状态,被主节点用于复制超时的判断
    2)辅助实现 min-slaves 选项,来保证主节点在不安全的情况下不会执行写命令
    3)检测命令丢失

二、发布与订阅

Redis 发布订阅(pub/sub)是一种消息队列通信模式:发送者(pub)发送消息,订阅者(sub)接受消息。Redis 客户端可以订阅任意数量的频道。

  • 原理:Redis通过subscribe命令订阅频道后,redis-server里维护一个字典,字典的键就是一个个频道,而值则是一个链表链表中保存了所有订阅这个channel的客户端。publish命令则向订阅者发送消息,redis-server会使用给定的频道作为键,在维护的channel中查找记录了订阅这个频道的所有客户端的链表,遍历这个链表,将消息发送给所有订阅者。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值