前言:
在分布式系统中为了解决单点问题,通常会把数据复制多个副本部署到其他机器,满足故障恢复和负载均衡等需求。Redis也是如此,它为我们提供了复制功能,实现了相同数据的多个Redis副本。复制功能是高可用Redis的基础。
建立复制:
参与复制的Redis实例划分为主节点(master)和从节点(slave)。默认情况下,Redis都是主节点。每个从节点只能有一个主节点,而主节点可以同时具有多个从节点,复制的数据流是单向的,只能由主节点复制到从节点。
在虚拟机上启动了两个端口为6379(本人的6379节点的redis是在ip为192.168.91.8的虚拟机上)和6380的redis节点。
1、在127.0.0.1:6380执行如下命令:
127.0.0.1:6380> slaveof 192.168.91.8 6379
slaveof配置都是在从节点发起,这时6379作为主节点,6380作为从节点
2、测试
主节点set值看看从节点能否获取到
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> get hello
"world"
127.0.0.1:6380> get hello
从运行结果看,复制已经起到了作用,针对主节点6379的任何修改都可以同步到从节点6380中,复制过程如下:
saveof本身是异步的,执行slaveof命令时,节点只保存主节点信息后返回,后续复制流程在节点内部异步执行。
3、使用info replication命令查看复制相关状态
1)主节点6379复制状态信息:
2)从节点6380复制状态信息:
断开复制:
slaveof命令不但可以建立复制,还可以在从节点执行slaveof no one来断开与主节点复制关系。例如在6380节点上执行slaveof no one来断开复制
从节点断开复制后并不会抛弃原有数据,只是无法再获取主节点上的数据变化。
总结:
复制的实现方式不只一种,本次指针的小编认为方便的方式来总结,多多实践理解的会更深刻,有问题欢迎留言指出~~谢谢~~