Redis主从架构

Redis主从架构

  • 一、主从架构搭建
  • 二、Redis主从工作原理
    • 1.主从复制(全量复制)流程
    • 2.主从复制(部分复制,断点续传)流程

一、主从架构搭建

在单机安装的基础上,再启动一个端口号为6380的redis实例作为从节点
搭建步骤:
1.复制redis.conf配置文件
Redis主从架构_第1张图片
2.修改redis.conf配置文件

port 6380

# 把pid进程号写入pidfile配置的文件
pidfile /var/run/redis_6380.pid

logfile "6380.log"

# 指定数据存放目录 
dir /usr/local/redis/6380/

# bind 127.0.0.1 

# 从本机6379的redis实例复制数据,Redis 5.0之前使用slaveof
replicaof 192.168.0.60 6379 

# 配置从节点只读
replica‐read‐only yes 

3.启动从节点

./bin/redis‐server ./6380/redis.conf

4.查看从节点是否启动成功及从节点是否同步主节点数据
在这里插入图片描述
Redis主从架构_第2张图片

二、Redis主从工作原理

1.主从复制(全量复制)流程

Redis主从架构_第3张图片

  1. 如果你为master配置了一个slave,不管这个slave是否是第一次连接上master,它都会发送一个PSYNC命令给master请求复制数据
  2. master收到PSYNC命令后,会在后台进行数据持久化通过bgsave生成最新的RDB快照文件,持久化期间,master会继续接收客户端的请求,它会把这些可能修改的数据集的请求缓存到内存中,当持久化进行完毕后,master会把这份rdb文件数据集发送给slave
  3. slave会把接收到数据进行持久化生成rdb,然后再加载到内存中
  4. master再将之前缓存到内存中的命令发送给slave
  5. slave节点执行缓存的写命令,将数据写入到内存中
  6. master通过socket长链接持续的将写命令发送到从节点,保证主从节点的数据一致性

2.主从复制(部分复制,断点续传)流程

Redis2.8版本开始,redis支持部分数据复制的命令PSYNC去master同步数据,slave与master能够在网络连接断开重连后只进行部分数据复制

master会在其内存中创建一个复制数据用的缓存队列,缓存最近一段时间数据,master和它所有的slave都维护了复制的数据下表offset和master的进程id

当网络断开重连后,slave会请求master进行未完成的复制,从所记录的下标开始

如果master进程id变化了,或者从节点下标offset太旧,已经不在master的缓存队列中了,那么将会进行一次全量复制
Redis主从架构_第4张图片

你可能感兴趣的:(Redis,redis)