- 主从复制 Replication
一个Redis服务可以有多个该服务的复制品,这个Redis服务称为Master,其他复制品称为Slaves
只要网络连接正常,Master会一直将自己的数据更新同步给Slaves,保持主从同步
只有Master可以执行写命令,Slaves只能执行读命令
- 主从复制 Replication
从服务器执行客户端发送的读命令,比如GET、LRANGE、SMEMMBERS、HGET、ZRANGE等等
客户端可以连接Slaves执行读请求,来降低Master的读压力
- 主从复制创建
redis-server --slaveof ,配置当前服务称为某Redis服务的Slave
redis-server --port 6380 --slaveof 127.0.0.1 6379
SLAVEOF host port命令,将当前服务器状态从Master修改为别的服务器的Slave
redis > SLAVEOF 192.168.1.1 6379,将服务器转换为Slave
redis > SLAVEOF NO ONE ,将服务器重新恢复到Master,不会丢弃已同步数据
配置方式:启动时,服务器读取配置文件,并自动成为指定服务器的从服务器
slaveof
slaveof 127.0.0.1 6379
- 主从复制演示
redis-server --slaveof
redis-server --port 6380 --slaveof 127.0.0.1 6379
redis-cli -p 6380 -n 0
测试Master和Slave的读写
- 主从复制演示
SLAVEOF 命令
从服务器连接到192.168.56.201的6379端口
redis > SLAVEOF 192.168.56.201 6379
redis > SLAVEOF NO ONE ,将服务器重新恢复到Master,不会丢弃已同步数据
redis > SET n2key 5
redis > get n2key
redis > keys *
redis > SLAVEOF 192.168.56.201 6379
redis > keys *
- 主从复制演示
配置方式
在node2节点安装配置redis服务,修改配置文件
slaveof 192.168.56.201 6379
启动服务,观察和node1的同步
redis > SLAVEOF NO ONE,观察是否可写set、keys *
- 主从复制问题
一个Master可以有多个Slaves
Slave下线,只是读请求的处理性能下降
Master下线,写请求无法执行
其中一台Slave使用SLAVEOF no one命令成为Master,其它Slaves执行SLAVEOF命令指向这个新的Master,从它这里同步数据
以上过程是手动的,能够实现自动,这就需要Sentinel哨兵,实现故障转移Failover操作
redis主从复制