redis主从模式(读写分离)

为什么提出 主从模式(读写分离)

  1. 分担读压力。当访问量很大时,一个redis服务无法支撑 读写 请求,使用 主从模式,拓展 读 性能

  2. 高可用。一个redis意外退出,不影响其他redis使用

什么是主从模式

主从模式中,redis分为2类:

  • 主(master):可读可写,但一般只用于写。一个或多个
  • 从(slave):只读。多个

为什么叫 读写分离

当应用 读取数据时,连接 从(slave)redis,当写入数据时,连接 主(master)redis,所以称之为 读写分离

主从同步(主从复制)

数据可以从 主redis 向 从redis 复制(同步),分为:

  • 全量同步
  • 增量同步

全量同步

启动 从redis,连接 主redis后,全量复制 主redis 的数据

过程:

  1. 启动 从redis,连接 主redis后,向 主redis 发送SYNC命令
  2. 主redis 接收到SYNC命名后,执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令;
  3. 主redis BGSAVE执行完后,向所有 从redis 发送 RDB文件,并在发送期间继续记录被执行的写命令;
  4. 从服务器收到快照文件后丢弃所有旧数据,载入收到的快照;
  5. 主服务器快照发送完毕后开始向从服务器发送缓冲区中的写命令;
  6. 从服务器完成对快照的载入,开始接收命令请求,并执行来自主服务器缓冲区的写命令;

增量同步

从redis启动后正常工作,主redis每执行一个 写命令,同时向 从redis 发送相同的写命令,从redis 接收并执行收到的写命令

安装部署

命令模式

执行下面命令(不便于管理)

slaveof masterip masterport

配置文件模式(重要)

redis主从模式(读写分离)安装部署(学习)

特点

  • 主从采用异步复制数据

  • 主数据库可以进行读写操作,当写操作时会自动将数据同步给从数据库

  • 从数据库一般只读的,并且接收主数据库同步过来的数据

  • 一个master可以拥有多个slave,但是一个slave只能对应一个master

  • 一个slave也可以连接多个slave

  • slave意外退出,不影响其他slave的读和master的读和写,重新启动后会将数据从master同步过来

  • master意外退出,不影响slave的读,但redis不再提供写服务,master重启后redis将重新对外提供写服务

  • master挂了以后,不会在slave节点中重新选一个master

感谢:https://blog.csdn.net/miss1181248983/java/article/details/90056960

slave 切换为 master

如果master意外退出,可以手动将slave切换为master,继续提供 写 操作

登录slave redis执行命令:

slaveof no one

缺点

  1. 没有缓解 写 压力
  2. 主(master)redis意外退出,无法 写数据

好文章:
https://www.cnblogs.com/daofaziran/p/10978628.html
https://www.jianshu.com/p/4aa9591c3153


原文出处:/show_1EF5p3jhUDeo.html