天天看点

搭建redis主从结构

Redis Replication,非常简单的配置和使用,是非常普遍的master-slave结构,Slave Redis实例准确的复制主实例的副本。 每次连接断开时,slave将自动重新连接到master,并且无论主站发生什么情况,slave都会尝试成为master的精确副本。

主从复制结构主要使用三种机制:

当slave和master节点正常连接时,master节点发送多个命令的数据流给slave节点来更新salve的数据,来实现对master节点数据变更的复制。
当master和slave的连接中断时,网络问题、master超时、slave超时等都会导致连接中断,slave会尝试重新连接并尝试重新同步那部分因为断开连接没有同步的数据。
slave没有同步的数据无法同步时,slave会要求重新同步所有数据,这是一个比较复杂的过程,master创建一个他所有数据的快照,并发送给slave。然后,在master数据更改时,继续发送命令数据流给slave来保持数据同步。

Redis默认使用异步复制,低延迟,高性能,master不会等待slave执行复制,但是如果需要,Redis也支持了同步的复制。

通过简单的配置,完成redis主从复制repl。

docker启动两个redis容器master,slave,docker部署redis参考《Docker部署Redis》

在slave的redis.conf中增加配置:

slaveof {master_IP} {master_port}
           

如果master有密码的话,还需要再slave的redis.conf中设置密码,例如我的密码是redis,配置如下:

masterauth redis
           

重新启动slave,测试同步。其中09e7b55bcacb为master,cd6ce632d93d为slave。

[[email protected] redis1]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
cd6ce632d93d        redis:5.0.5         "docker-entrypoint.s…"   2 seconds ago       Up 2 seconds        0.0.0.0:6381->6379/tcp              redis-slave
09e7b55bcacb        redis:5.0.5         "docker-entrypoint.s…"   2 hours ago         Up 2 hours          0.0.0.0:6380->6379/tcp              redis-master
[[email protected] redis1]# docker exec -it 09e7b55bcacb redis-cli
127.0.0.1:6379> auth redis
OK
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set test test
OK
127.0.0.1:6379> 
[[email protected] redis1]# docker exec -it cd6ce632d93d redis-cli
127.0.0.1:6379> auth redis
OK
127.0.0.1:6379> keys *
1) "test"
127.0.0.1:6379> get test
"test"
127.0.0.1:6379> 
           

(完)(^_^)

继续阅读