一、集群结构

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

主从结构如下:

共包含三个节点,一个主节点,两个从节点。在同一台虚拟机中开启3个redis实例,模拟主从集群:

二、搭建步骤

1、创建目录:

创建三个文件夹,名字分别叫7001、7002、7003:

# 进入/tmp目录
cd /tmp
# 创建目录
mkdir 7001 7002 7003

2、编写redis.conf配置文件:

将redis-6.2.6/redis.conf文件复制到三个目录中,持久化模式为默认的RDB模式。并修改每个文件夹内的配置文件,将端口分别修改为7001、7002、7003,将rdb文件保存位置都修改为自己所在目录:

# 开启RDB
# save ""
save 3600 1
save 300 100
save 60 10000# 关闭AOF
appendonly no
sed -i -e 's/6379/7001/g' -e 's/dir .\//dir \/tmp\/7001\//g' 7001/redis.conf
sed -i -e 's/6379/7002/g' -e 's/dir .\//dir \/tmp\/7002\//g' 7002/redis.conf
sed -i -e 's/6379/7003/g' -e 's/dir .\//dir \/tmp\/7003\//g' 7003/redis.conf

3、在配置文件中修改声明IP:

虚拟机本身有多个IP,为了避免将来混乱,我们需要在redis.conf文件中指定每一个实例的绑定ip信息,格式如下:

# redis实例的声明 IP
replica-announce-ip 192.168.1.103
# 逐一执行
sed -i '1a replica-announce-ip 192.168.150.101' 7001/redis.conf
sed -i '1a replica-announce-ip 192.168.150.101' 7002/redis.conf
sed -i '1a replica-announce-ip 192.168.150.101' 7003/redis.conf# 或者一键修改
printf '%s\n' 7001 7002 7003 | xargs -I{} -t sed -i '1a replica-announce-ip 192.168.150.101' {}/redis.conf

三、启动

为了方便查看日志,在mobaxterm中打开3个redis窗口,分别在tmp目录下启动命令:

# 第1个
redis-server 7001/redis.conf
# 第2个
redis-server 7002/redis.conf
# 第3个
redis-server 7003/redis.conf

启动后:

四、开启主从关系

配置主从关系可以使用replicaof 或者slaveof(redis5.0以前)命令:

# slaveof <masterip> <masterport>
slaveof 192.168.1.103 7001

临时:使用redis-cli客户端连接到redis服务,执行slaveof命令(重启后失效);

永久:将该命令添加在在redis.conf中。

为了便于演示我们使用临时方式。

通过redis-cli命令连接7002,执行下面命令:

# 在tmp目录下连接 7002
redis-cli -p 7002
# 执行slaveof
slaveof 192.168.1.103 7001

通过redis-cli命令连接7003,执行下面命令:

# 在tmp目录下连接 7003
redis-cli -p 7003
# 执行slaveof
slaveof 192.168.1.103 7001

连接 7001,查看集群状态 :

# 连接 7001
redis-cli -p 7001
# 查看状态
info replication

结果:

五、测试

六、原理

1、全量同步

master如何判断slave是不是第一次来同步数据?这里会用到两个很重要的概念:

Replication Id

简称replid,是数据集的标记,id一致则说明是同一数据集。每一个master都有唯一的replid,slave则会继承master节点的replid;

offset:

偏移量,随着记录在repl_baklog中的数据增多而逐渐增大。slave完成同步时也会记录当前同步的offset。如果slave的offset小于master的offset,说明slave数据落后于master,需要更新。因此slave做数据同步,必须向master声明自己的replication id 和offset,master才可以判断到底需要同步哪些数据。

全量同步流程:

2、增量同步

其中repl_baklog大小有上限,写满后会覆盖最早的数据。如果slave断开时间过久,导致尚未备份的数据被覆盖,则无法基于log做增量同步,只能再次全量同步。

3、优化

可以从以下几个方面来优化Redis主从集群:

4、总结

Redis 主从机制相关推荐

  1. Redis主从架构:主从同步和哨兵机制

    Redis主从架构:主从同步和哨兵机制 一. Redis主从架构 二. 主从同步 2.1 引入 2.2 原理 (1) 全量同步 (2) 增量同步 (3) 优化Redis主从集群 2.3 总结 三. 哨 ...

  2. Redis主从同步机制

    Redis主从同步机制 Redis主从同步机制 全量复制 增量复制 Redis主从同步机制 全量复制 在slave从服务初始化阶段,需要将master主服务器上所有复制都复制一份,流程: 从服务器连接 ...

  3. Redis主从同步机制详解

    1.什么是高可用? 单机redis支撑的并发量有限(一般QPS在1W-几W不等),如果并发量大可能导致redis挂掉:redis配置不合理,fork子进程同步也可能导致redis挂掉(伪挂):操作系统 ...

  4. 【带你重拾Redis】Redis 主从架构

    Redis 主从架构 单机的 Redis,能够承载的 QPS 大概就在上万到几万不等.对于缓存来说,一般都是用来支撑读高并发的.因此架构做成主从(master-slave)架构,一主多从,主负责写,并 ...

  5. (六)Redis主从自动恢复-sentinel

    原文地址,转载请注明出处: http://blog.csdn.net/qq_34021712/article/details/72026313     ©王赛超 准备工作:(1个master,2个sl ...

  6. Redis 主从配置和参数详解

    安装redis 下载redis wget http://download.redis.io/releases/redis-3.0.7.tar.gz解压redis tar -xvf redis-3.0. ...

  7. Redis主从握手流程,你真的了解了吗?

    Redis是开源的key-value存储系统,可作为数据库.缓存.消息组件. Redis的作者是Salvatore Sanfilippo(网名为antirez),他在2009年开发完成并开源了Redi ...

  8. redis 主从配置_应用 | Redis实现 主从,单例,集群,哨兵,配置应用

    小小经过一天的休整 公众号更新规则:每周六将会停更一次,进行短期的休整,其余时间继续每天一更. 思维导图如下 Redis 主从配置 这里配置Redis主从 什么是主从 主从复制,是指把一台Redis服 ...

  9. Redis 主从集群搭建及哨兵模式配置

    Redis 主从集群搭建及哨兵模式配置 最近搭建了redis集群及哨兵模式,为方便以后查看特此记录下来: 1.Redis安装 2.主从架构 2.1 Redis主从架构图 2.2Redis主从结构搭建 ...

最新文章

  1. 华硕笔记本节能证书_新标准兼顾性能与续航 笔记本换代哪些型号值得买?
  2. SAP 电商云 Spartacus UI product 明细页面的路由配置
  3. Qt样式表之一:Qt样式表和盒子模型介绍
  4. Android官方开发文档Training系列课程中文版:线程执行操作之创建多线程管理器
  5. @JsonProperty注解解析
  6. ubuntu-kylin16.04搭建lamp环境。
  7. python中的模块与类
  8. 如何设置通知栏下拉不可用
  9. 转载 2012年游戏行业人才需求预测
  10. java case用法_Go语言 | goroutine不只有基础的用法,还有这些你不知道的操作
  11. caffe和caffe-yolov3编译出错:fatal error: caffe/proto/caffe.pb.h: No such file or directory
  12. mysql数据库修改结构_Mysql 数据库之修改标的结构
  13. 浅谈逆向——从案例谈OD的使用(OD的使用2)
  14. MFC 通用对话框之“查找替换“对话框
  15. 基于微信小程序的鲜花销售系统毕业设计源码
  16. 事业单位考试题库计算机网络,计算机考试题库:计算机网络模拟练习题(2)...
  17. 1、 域名系统的主要功能是什么?互联网的域名结构是怎样的?域名系统中的本地域名服务器、根域名服务器、顶级域名服务器以及权限域名服务器有何区别?2、 假定要从已知的URL获得一个万维网文档。若该万维网服
  18. Python实现节假日判断,手动添加后续节假日
  19. Django 基于类的通用视图详解
  20. Python把mp4视频转化成gif动图

热门文章

  1. 【精讲】Javascript模板字面量
  2. 工作反思(230217)调度调整
  3. 什么是等保2.0?不做等保有什么后果?
  4. Excel不用打开工作簿就能直接在里面输入文字!
  5. 会声会影2023怎么使用遮罩制作方法 会声会影遮罩能不能自己描边
  6. 靶机渗透实战——SickOs1.2
  7. windows 8   应用商店揭秘(推荐)
  8. HEVC代码学习:帧间预测——MVP过程中MV的获取、传递及存储
  9. 日均互动超50万次 揭秘微信推广运营之道
  10. 集线器hub、交换机switch、路由器router 的区别