redis主从集群及其原理(优化)
目录
一、Redis主从
搭建主从集群
主从同步原理:编辑
主从同步优化:
一、Redis主从
搭建主从集群

那么我们接下来就在虚拟机当中搭建Redis的主从集群:
1.安装镜像:
通过docker images命令发现我们并没有下载redis镜像,因此需要把资料当中的tar包复制到虚拟机当中,通过docker load -i redis.tar指令加载tar包并再次使用docker images命令查看:

2.将带有以下配置信息的yml文件加载到虚拟机当中(/root/redis):
version: "3.2"services:r1:image: redis:6.2.7container_name: r1network_mode: "host"entrypoint: ["redis-server", "--port", "7001"]r2:image: redis:6.2.7container_name: r2network_mode: "host"entrypoint: ["redis-server", "--port", "7002"]r3:image: redis:6.2.7container_name: r3network_mode: "host"entrypoint: ["redis-server", "--port", "7003"]
随后通过docker compose up -d命令运行集群(注意这里要cd到redis目录下才行):

3.配置主从关系,由于每个redis容器都认为自己是主节点,所以还需要手动配置主从关系:
通过docker exec -it r1 redis-cli -p 7001以及info replication指令查看r1容器的信息:

进入r2、r3配置主从关系:
# 连接r2
docker exec -it r2 redis-cli -p 7002
# 认r1主,也就是7001
slaveof 192.168.150.101 7001

这样一来我们就配置好了主从关系,并且我们能够发现:我们能在主节点读写数据,但是从节点只能读数据(来自主节点的数据)却不能写数据
主从同步原理:

那么redis怎么知道这个slave是不是第一次来的呢?首先我们得知道每一个redis在构建主从关系之前都会有一个属于自己的replicationID(简称replid),当它们之间产生主从关系时,原有的replid会被统一替换成一个相同的replid表示主从关系(例如r1是r2的master,那么它们俩原有不同的replid会被一个相同的replid替换);当一个redis断开连接后,它的replid没有变化,下次相连时master发现它们俩的replid一样说明以前有连接过,就是通过这样的方式判断是否初次连接

主从同步优化:


