redis主从集群及其原理(优化)

目录

一、Redis主从

搭建主从集群

主从同步原理:​编辑

主从同步优化:


一、Redis主从

搭建主从集群

那么我们接下来就在虚拟机当中搭建Redis的主从集群:

1.安装镜像:

通过docker images命令发现我们并没有下载redis镜像,因此需要把资料当中的tar包复制到虚拟机当中,通过docker load -i redis.tar指令加载tar包并再次使用docker images命令查看:

2.将带有以下配置信息的yml文件加载到虚拟机当中(/root/redis):

bash 复制代码
version: "3.2"

services:
  r1:
    image: redis:6.2.7
    container_name: r1
    network_mode: "host"
    entrypoint: ["redis-server", "--port", "7001"]
  r2:
    image: redis:6.2.7
    container_name: r2
    network_mode: "host"
    entrypoint: ["redis-server", "--port", "7002"]
  r3:
    image: redis:6.2.7
    container_name: r3
    network_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配置主从关系:

bash 复制代码
# 连接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一样说明以前有连接过,就是通过这样的方式判断是否初次连接

主从同步优化:

相关推荐
流星白龙14 小时前
【Redis】2.Redis重大版本
数据库·redis·junit
流星白龙14 小时前
【Redis】7.Hash表
数据库·redis·哈希算法
流星白龙15 小时前
【Redis】4.基本全局命令
数据库·redis·缓存
流星白龙18 小时前
【Redis】3.Redis安装与命令行客户端
数据库·redis·缓存
Season4501 天前
Redis命令 (generic即通用命令)
数据库·redis·bootstrap
我不想名字重复1 天前
redis缓存和数据库数据保持一致
数据库·redis·缓存
流星白龙1 天前
【Redis】6.计数其他命令
数据库·redis·缓存
流星白龙1 天前
【Redis】8.List列表
redis
NWU_白杨1 天前
三种常用的数据存储技术
数据库·redis·mysql·sqlite
我叫黑大帅1 天前
我为什么单一消费者的场景下,要用 Redis List 当消息队列?
redis·后端·面试