redis 主从复制(读写分离)
-
将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave);数据的复制是单向的,只能由主节点到从节点。
-
默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。
主从之间数据复制存在消耗,建议一主两从就可以了。
作用
-
负载均衡
在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以提高Redis服务器的并发量。
-
数据的热备份
主节点会把数据复制给从节点。
-
故障恢复
主节点宕机时可以由从节点提供服务
配置
主节点不需要修改配置文件,进入redis命令行输入info replication
可以查看当前从节点信息
从节点服务器修改redis.conf配置
# 配置master节点的ip和端口号
# replicaof <masterip> <masterport>
replicaof 192.168.31.96 6379
# master节点的密码
# masterauth <master-password>
masterauth wangjialun
# 配置为只读状态,不能进行set操作
replica-read-only yes
从节点配置完成后重启,进入redis命令行执行info replication
可以查看当前主节点信息
# Replication
role:slave
master_host:192.168.31.96
master_port:6379
master_link_status:up
主节点 执行info replication
也可以实时看到当前所有的子节点
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.31.52,port=6379,state=online,offset=23602,lag=0
slave1:ip=192.168.31.121,port=6379,state=online,offset=23602,lag=0
master_failover_state:no-failover
此时测试主节点发送的数据变化,都会同步复制到从节点上面。