Redis | 主从模式

Redis | 主从模式

1. 简介

Redis主从模式(Replication)是Redis提供的一种数据备份和高可用性解决方案。通过主从复制,可以将一个Redis服务器的数据复制到其他多个从服务器,从而实现数据的备份和读写分离,提高系统的性能和可用性。

主从模式的工作原理如下:

  1. 主节点(Master):主节点是主要的数据写入节点,负责接收客户端的写入操作(写操作包括SET、INCR等),并将写入的数据同步到从节点。
  2. 从节点(Slave):从节点负责复制主节点的数据。它接收主节点发送过来的写操作命令,并执行相同的写操作,以保持数据的一致性。
  3. 数据同步:主节点会将写操作的命令发送给所有连接的从节点,从节点执行相同的写操作,从而保持数据同步。
  4. 只读操作:客户端的只读操作(例如GET等)可以由从节点处理,从而减轻主节点的压力,提高读取性能。

主从模式的优势在于数据备份和读写分离:

  • 数据备份:通过复制数据到从节点,即使主节点发生故障,数据仍然可用,并且可以通过从节点恢复数据。
  • 读写分离:通过从节点处理只读操作,可以减轻主节点的负担,提高读取性能。

2. 配置

2.1. 配置主节点

注意:不配置默认也是主节点

启动参数方式

在主节点的redis-server执行程序启动时添加--replicaof no one启动参数,表示当前节点为主节点。

复制代码
redis-server --replicaof no one

配置文件方式

在主节点的redis.conf文件中设置replicaof选项为no one,表示当前节点为主节点。

复制代码
replicaof no one

2.2. 配置从节点

启动参数方式

在主节点的redis-server执行程序启动时添加--replicaof <master_ip> <master_port>启动参数,设置当前节点的主节点。

如果主节点有密码还需要添加--masterauth <master_password>

配置文件方式

在从节点的redis.conf文件中设置replicaof选项为主节点的地址和端口。

复制代码
replicaof <master_ip> <master_port>

如果主节点有密码还需要添加masterauthredis.conf

复制代码
masterauth <master_password>

3. 演示

docker-compose.yaml

yaml 复制代码
version: "3.8"
services:
  redis1:
    container_name: redis1
    image: redis:7.0
    command:
      - redis-server
      - --requirepass 123456
      - --bind * -::*
  redis2:
    container_name: redis2
    image: redis:7.0
    command:
      - redis-server
      - --requirepass 123456
      - --bind * -::*
      - --masterauth 123456
      - --replicaof redis1 6379
    depends_on:
      - redis1
  redis3:
    container_name: redis3
    image: redis:7.0
    command:
      - redis-server
      - --requirepass 123456
      - --bind * -::*
      - --masterauth 123456
      - --replicaof redis1 6379
    depends_on:
      - redis1
  1. 进入窗口控制台:docker exec -it redis1 bash

  2. 控制台内部操作:

    复制代码
    root@1c0cccc0d756:/data# redis-cli
    127.0.0.1:6379> AUTH 123456
    OK
    127.0.0.1:6379> INFO replication
    # Replication
    role:master
    connected_slaves:2
    slave0:ip=172.18.0.3,port=6379,state=online,offset=1694,lag=0
    slave1:ip=172.18.0.4,port=6379,state=online,offset=1694,lag=0
    master_failover_state:no-failover
    master_replid:0158f9bf36c9db3b95829e29139fa71b1ecd2b84
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:1694
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:1694

4. 注意

主从复制是异步的,从节点可能会有一定的延迟。如果主节点故障,可以将一个从节点提升为主节点,继续提供服务。但在进行主从切换时,需要考虑数据一致性和可能丢失的写操作。

相关推荐
ShiXZ21318 小时前
Redis docker-compose 部署指南
redis·docker·eureka
青山木21 小时前
Redis 缓存一致性全解:从 Cache Aside 到延迟双删、Canal+MQ 的进阶之路
java·数据库·redis·后端·缓存
YDS8291 天前
大营销平台 —— 活动SKU库存扣减业务及其一致性处理
java·spring boot·redis·rabbitmq·ddd
爬也要爬着前进2 天前
redis主从搭建
数据库·redis·缓存
用户095367515832 天前
在系统的学习 redis 前的疑惑
redis·go
吴声子夜歌2 天前
Redis 3.x——集群故障转移
java·数据库·redis·集群
明豆2 天前
Redis 分布式缓存生产实战
redis·分布式·缓存
海兰2 天前
【高速缓存】RedisVL 指南:从向量搜索到 AI 应用落地
人工智能·redis
weixin_727535622 天前
双Token认证体系深度拆解:Spring Security + JWT + Redis
redis·spring·wpf
William Dawson2 天前
【华为云 MRS Redis 安全集群 Kerberos 认证接入实战(Spring Boot \+ Jedis)】
redis·安全·华为云