11 01 2023

redis主从架构

单节点Redis的并发能力是有上限的,要进一步提高redis的并发能力,就需要搭建主从集群,实现读写分离。

启动三个redis节点,启动成功之后,这三个节点是没有任何关系的。需要手动配置主从关系。

配置方式第一种方式:临时配置 重启后会生效

slaveof <masterip> <masterport>
slaveof 127.0.0.1 6739

// 使用此命令可以查询集群的信息
info replication

从节点只能执行读操作。你在从节点上进行写操作会报错。

配置第二种方式,直接修改配置文件,在配置文件当中加入slaveof <masterip> <masterport>。


redis主从数据同步原理:主从第一次同步是 全量复制,也就是slave节点第一次连接上master节点的时候。master节点会通过bgsave命令生成rdb文件,然后发送rdb文件给slave节点,slave节点拿到rdb文件之后,清除本地的数据加载这一份rdb的文件。(后面的是增量复制)master节点在rdb期间,新接收的命令,会写入一个名为repl_baklog的缓冲区的文件当中,最后将缓冲区的命令发送给slave节点。


master节点判断slave节点是否是第一次连接的细节。

Replication Id :这个id是一个数据集的标记,id相同说明属于同一个数据集。master可以和slave节点比较这个id。

offest:偏移量,数据缓冲区repl_baklog的数据会越来越多,这个偏移量就是用来判断slave节点的数据是否需要更新。

master判断一个节点是否是第一次同步的依据,就是看replication id 是否一致。


数据缓冲区的原理 repl_baklog,这个文件是一个固定大小的数组,但是他是一个环形的,也就是说角标达到数组的末尾,会从0头部开始重新写,这里会覆盖头部的数据。repl_baklog大小是有上限的,如果slave节点断开的时间过长,导致尚未备份的数据被覆盖,这种情况就无法进行增量同步,只能进行全量同步。


优化redis主从架构:①在master节点配置repl-diskless-sync yes启用无磁盘复制,就是直接往网络io中写。(这个配置网络的带宽必须要好)②redis单节点占用内存不要太大。③适当提高repl_baklog的大小,发现slave节点宕机要尽快恢复故障,避免发生全量同步的情况。④master节点的从节点数量不要太多,可以采用主节点-从节点-从节点的链式架构。



有任何问题联系 QQ 676558206 email [email protected] [email protected]


延伸阅读
  1. 浪海博客系统友情链接说明
  2. 浪海同志的一生
  3. 浪海皇室 QQ飞车手游
  4. 浪海博客系统部署说明
  5. minio 相关说明
  6. rabbitMQ 相关说明
  7. mysql相关说明
  8. java基础面试题002
  9. gateway服务网关基本使用
  10. ribbon负载均衡
如果出现代码等内容显示不正常,使用以前的显示器:以前的显示器
发表评论