为什么提出 主从模式(读写分离)
分担读压力。当访问量很大时,一个redis服务无法支撑 读写 请求,使用 主从模式,拓展 读 性能
高可用。一个redis意外退出,不影响其他redis使用
什么是主从模式
主从模式中,redis分为2类:
- 主(master):可读可写,但一般只用于写。一个或多个
- 从(slave):只读。多个
为什么叫 读写分离
当应用 读取数据时,连接 从(slave)redis,当写入数据时,连接 主(master)redis,所以称之为 读写分离
主从同步(主从复制)
数据可以从 主redis 向 从redis 复制(同步),分为:
- 全量同步
- 增量同步
全量同步
启动 从redis,连接 主redis后,全量复制 主redis 的数据
过程:
- 启动 从redis,连接 主redis后,向 主redis 发送SYNC命令
- 主redis 接收到SYNC命名后,执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令;
- 主redis BGSAVE执行完后,向所有 从redis 发送 RDB文件,并在发送期间继续记录被执行的写命令;
- 从服务器收到快照文件后丢弃所有旧数据,载入收到的快照;
- 主服务器快照发送完毕后开始向从服务器发送缓冲区中的写命令;
- 从服务器完成对快照的载入,开始接收命令请求,并执行来自主服务器缓冲区的写命令;
增量同步
从redis启动后正常工作,主redis每执行一个 写命令,同时向 从redis 发送相同的写命令,从redis 接收并执行收到的写命令
安装部署
命令模式
执行下面命令(不便于管理)
slaveof masterip masterport
配置文件模式(重要)
特点
主从采用异步复制数据
主数据库可以进行读写操作,当写操作时会自动将数据同步给从数据库
从数据库一般只读的,并且接收主数据库同步过来的数据
一个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
缺点
- 没有缓解 写 压力
- 主(master)redis意外退出,无法 写数据
好文章:
https://www.cnblogs.com/daofaziran/p/10978628.html
https://www.jianshu.com/p/4aa9591c3153

