一,准备工作
1,安装docker,具体教程看这里
2,下载 nshkp/redis5:v1镜像
docker pull nshkp/redis5:v1
3,启动容器和容器中的redis,并从容器中退出
docker run -itd -p 9510:6379 nshkp/redis5:v1 /bin/bash
docker exec -it 0e47b52c462d773a8faa5fd1f3acad8c7ffb94697090a0f3e6b55dbf8cce159a bash
redis-server /etc/redis.conf
exit
4,准备工作完成,这下就可以在一台机器上创建好多个redis了(redis默认密码:walplpawxqxayjr,此redis配置为可远程访问,注意这个容器对应的是宿主机的9510端口)
二,redis 配置主从的3种方法
参与复制的redis实例划分为主节点(master)和从节点(slave)。默认情况下,redis都是主节点。每个从节点只能有一个主节点,而主节点可以同时具有多个从节点。复制的数据流是单向的,只能有主节点复制到从节点。
方法1,修改配置文件
1,在redi.conf中新增两行
#主节点密码
masterauth walplpawxqxayjr
#主节点的host和端口
slaveof host port
2,连接从节点之后,输入info replication查看是否设置成功
master_link_status:
up 连接主节点成功
down 连接主节点失败
3,也可以连接上主节点,执行 info replication 查看
connected_slaves:
从节点数量
方法2:启动时传参
1,在redi.conf中新增一行
#主节点密码
masterauth walplpawxqxayjr
2,redis启动时,加--slaveof参数
redis-server /etc/redis.conf --slaveof host port
方法3:slaveof命令
1,启动redis服务
redis-server /etc/redis.conf
2,连接redis服务
redis-cli -h host -p port -a pwd
3,设置主服务器密码
config set masterauth walplpawxqxayjr
4,设置当前redis服务的主节点
slaveof host port
================================分割线===============================
三,结尾
1,通过方法3,可以覆盖掉方法1,2的设置
2,redis的日志在docker容器中的路径/var/log/redis/redis.log
3,可以在从节点执行 slaveof no one 来断开与主节点复制关系
4, 网络延迟问题
主从节点一般部署在不同机器上,复制时的网络延迟就成为需要考虑的问题,Redis 为我们提供了repl-disable-tcp-nodelay参数用于控制是否关闭TCP NODELAY,默 认关闭,说明如下:
* 当关闭时,主节点产生的命令数据无论大小都会及时地发送给从节点,这样主从之间延迟会变小,但增加了网络带宽的消耗。适用于主从之间的网络环境 良好的场景,如同机架或同机房部署。
* 当开启时,主节点会合并较小的TCP数据包从而节省带宽。默认发送时间间隔取决于Linux的内核,- -般默认为40毫秒。这种配置节省了带宽但增大主从 之间的延迟。适用于主从网络环境复杂或带宽紧张的场景,如跨机房部署。
5,建立主从的流程
1),保存主节点信息
2),主从建立socket连接
3),发送ping命令
4),权限验证
5),同步数据
6),命令持续复制
可以在redis的日志文件中看到
6,注意 主从在同步的过程当中,会把原本的从节点的数据清空