Redis笔记之主从复制

1. 概念


主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(Master/Leader),后者称为从节点(Slave/Follower),数据的复制是单向的!只能由主节点复制到从节点(主节点以为主,从节点以为主)。

在这里插入图片描述

默认情况下,每台Redis服务器都是主节点,一个主节点可以有0个或者多个从节点,但每个从节点只能有一个主节点。

2. 作用


  1. 数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余的方式。
  2. 故障恢复:当主节点故障时,从节点可以暂时替代主节点提供服务,是一种服务冗余的方式。
  3. 负载均衡:在主从复制的基础上,配合读写分离,由主节点进行写操作,从节点进行读操作,分担服务器的压力;尤其是在读多写少的场景下,通过多个从节点分担负载,提高并发量。
  4. 高可用基石:主从复制还是哨兵和集群能够实施的基础。

3. 为什么使用集群


  1. 单台服务器难以负载大量的请求
  2. 单台服务器故障率高,系统崩坏概率大
  3. 单台服务器内存容量有限

4. 环境配置


redis.conf 中的replication模块

查看当前库的信息:info replication

127.0.0.1:6379> info replication # 查看当前库的信息
# Replication
role:master # 角色 master
connected_slaves:0 # 从机 0 个
master_replid:9a78b49fde23e317cda2a52eccbaa575e28dcab5
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

既然需要启动多个服务,就需要多个配置文件。
在这里插入图片描述

每个配置文件对应修改一下信息:

  • 端口号
  • pid文件名
  • 日志文件名
  • rdb文件名
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

启动单机多服务集群
在这里插入图片描述

5. 一主二从配置


默认情况下,每台Redis服务器都是主节点;我们一般情况下只用配置从机就好了
一主(79)二从(80,81)
在这里插入图片描述

使用slaveof host port命令就可以为从机配置主机了

  • 6380
    在这里插入图片描述
  • 6381
    在这里插入图片描述
  • 主机6379
    在这里插入图片描述

这里是使用命令搭建,是暂时的,真实开发中应该在从机的配置文件中进行配置,这样的话是永久的

在这里插入图片描述

6. 使用规则


  1. 从机只能读,不能写,主机可读可写,但多用于写。
    # 从机6381 只能读不能写
    127.0.0.1:6381> set name zhangsan
    (error) READONLY You can't write against a read only replica.
    127.0.0.1:6381> get name
    "zhangsan"
    # 主机6379 可以读写
    127.0.0.1:6379> set name zhangsan
    OK
    127.0.0.1:6379> get name
    "zhangsan"
    
  2. 当主机断电宕机后,默认情况下从机的角色不会发生变化,集群中只是失去了写操作, 当主机恢复以后,又会连接上从机恢复原状。
  3. 当从机断电宕机后,若不是使用配置文件配置的从机,再次启动后作为主机是无法获取之前主机的数据的,若此时重新配置成为从机,又可以获取到主机的所有数据。这里就要提到一个同步原理。
  4. 第二条中提到,默认情况下,主机故障后,不会出现新的主机,有两种方式可以产生新的主机:
    • 从机手动执行slaveof no one ,这样执行以后从机会独立出来成为一个主机
    • 使用哨兵模式(自动选举)

如果主机断开了连接,可以使用slaveof no one 让自己变成主机!其他的节点就可以手动连接到最新的主节点(手动)!如果这时候主机恢复了,那么就重新连接!

posted on   JAVA开发区  阅读(9)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示