wangJiaLun-go

王加伦的技术分享

0%

redis 主从复制(读写分离)

redis 主从复制(读写分离)

  • 将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave);数据的复制是单向的,只能由主节点到从节点。

  • 默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。

    主从之间数据复制存在消耗,建议一主两从就可以了。

作用

  • 负载均衡

    在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以提高Redis服务器的并发量。

  • 数据的热备份

    主节点会把数据复制给从节点。

  • 故障恢复

    主节点宕机时可以由从节点提供服务

配置

​ 主节点不需要修改配置文件,进入redis命令行输入info replication可以查看当前从节点信息

​ 从节点服务器修改redis.conf配置

1
2
3
4
5
6
7
8
# 配置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可以查看当前主节点信息

1
2
3
4
5
# Replication
role:slave
master_host:192.168.31.96
master_port:6379
master_link_status:up

主节点 执行info replication也可以实时看到当前所有的子节点

1
2
3
4
5
6
# 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

此时测试主节点发送的数据变化,都会同步复制到从节点上面。