Redis主从架构
Redis 支持简单并且易操作的主从复制功能,可以把从库看作是主库的镜像,数据同步基于秒级的同步
一个主服务器可以有多个从服务器,同时不仅Master可以有从库,从服务器也可以有自己的从库
在主从复制过程中,对于Master和Slave来讲都不会被阻塞。首先Master同步到一个或者多个Slave的时候,Master也可以正常的处理请求。Slave在同步的过程中,也可以先使用旧的同步数据,完成读请求。在同步新数据进行替换的瞬间是会有连接被阻塞的数据。
在从库配置完成启动之后,不管是第一次同步还是重新同步,Slave都会发送一个sync的命令给Master。Master接受到请求之后执行 bgsave
的操作。保存一个rdb文件。
在保存期间,所有的数据修改操作,master都会保存在一个缓冲区内。
首先不论一个或者多个Slave来请求,Master都可以使用这个rdb文件发送给Slave,Slave接受到rdb文件之后,将文件内的数据加载到内存中。
完成之后,Master会把缓冲区的写入操作通过 Redis 命令协议的方式,全部发送个Slave,这样的话,Slave就可以拥有一份和Master一样的数据。
主从配置与实战
直接在Slave服务器 Redis 配置文件里面添加 slaveof 192.168.1.1 6379
内容,指定同步那个服务器内容,重启生效(推荐),或者直接在客户端交互模式输入 slaveof 192.168.1.1 6379
命令,重启失效。
127.0.0.1:6379> slaveof 192.168.1.1 6379
OK
127.0.0.1:6379> info Replication
# Replication
role:slave ## 当前角色
master_host:192.168.1.1 ## Master地址
master_port:6379 ## Master端口
master_link_status:up ## 同步状态
master_last_io_seconds_ago:3 ## 同步时间差
master_sync_in_progress:0
slave_repl_offset:57
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0