【redis使用系列】docker1.10安装redis主从

本文可用于测试环境。

redis主从的工作原理

1.如果设置了一个Slave,无论是第一次连接还是重连到Master,它都会发出一个SYNC命令;
2.当Master收到SYNC命令之后,会做两件事:
a) Master执行BGSAVE:后台写数据到磁盘(rdb快照);
b) Master同时将新收到的写入和修改数据集的命令存入缓冲区(非查询类);
3.当Master在后台把数据保存到快照文件完成之后,Master会把这个快照文件传送给Slave,而Slave则把内存清空后,加载该文件到内存中;
4.而Master也会把此前收集到缓冲区中的命令,通过Reids命令协议形式转发给Slave,Slave执行这些命令,实现和Master的同步;
5.Master/Slave此后会不断通过异步方式进行命令的同步,达到最终数据的同步一致;
6.需要注意的是Master和Slave之间一旦发生重连都会引发全量同步操作。但在2.8之后,也可能是部分同步操作。

安装redis

创建配置文件目录

mkdir -p /data/server/redis/conf

下载配置文件

wget https://raw.githubusercontent.com/antirez/redis/3.0/redis.conf -O /data/server/redis/conf/redis.conf

修改配置文件

cd /data/server/redis/conf
sed -i ‘s/# slaveof /slaveof redis-master 6379/g’ redis.conf

启动主从节点

docker run --name redis-master -p 6379:6379 -d redis
docker run --link redis-master:redis-master -p 6380:6379 -v /data/server/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf --name redis-slave1 -d redis redis-server /usr/local/etc/redis/redis.conf
docker run --link redis-master:redis-master -p 6381:6379 -v /data/server/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf --name redis-slave2 -d redis redis-server /usr/local/etc/redis/redis.conf
docker run --link redis-master:redis-master -p 6382:6379 -v /data/server/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf --name redis-slave3 -d redis redis-server /usr/local/etc/redis/redis.conf

redis主从实验