一、首先搭建三个redis服务
创建三个文件配置目录以及数据目录
创建的目录为/docker/redis/conf
运行一下命令,既启动三个redis
docker run -p 6379:6379 --name redis -v /docker/redis/conf/redis.conf:/etc/redis/redis.conf -v /docker/redis/data:/data -d dcf9ec9265e0 redis-server /etc/redis/redis.conf --appendonly yes
docker run -p 6380:6379 --name redis_blank -v /docker/redis/conf2/redis.conf:/etc/redis/redis.conf -v /docker/redis/data2:/data -d dcf9ec9265e0 redis-server /etc/redis/redis.conf --appendonly yes
docker run -p 6381:6379 --name redis_blank2 -v /docker/redis/conf3/redis.conf:/etc/redis/redis.conf -v /docker/redis/data3:/data -d dcf9ec9265e0 redis-server /etc/redis/redis.conf --appendonly yes
二、使用docker 命令进入容器
docker exec -it 容器名称或镜像ID /bin/bash
三、使用客户端命令登录redis
redis-cli -h 127.0.0.1 -p 端口号
使用info replication 命令时,会发现三个redis的信息都为master
环境配置:
使用6379 作为主库,其他均为从库;在配置从库时 不用配置主库即可,
在从库的redis服务中:使用如下命令
slaveof 主库容器的IP地址 端口号 即可;
PS:如出现 Redis主从复制失败(master_link_status:down) 则检查网络是否通畅,检查主库是否设置了密码,检查防火墙端口;
使用docker时,不能用 slaveof 127.0.0.1 6379 ;因为127.0.0.1 不是主库的的IP 是本地的,所以使用docker 命令查看容器IP:docker inspect 容器名称或命令 如: docker inspect redis
四、以上为主从配置的环境
测试步骤:首先在从库设置一个键: 如
从库:
详细博客: https://blog.csdn.net/iechenyb/article/details/79828413
详细概念: https://www.cnblogs.com/wade-luffy/p/9639986.html
小问题?
主库挂了,从库还能读取到数据吗?
答:必须的,主库挂了,从库依然可以获取数据
主库宕机之后,在重启 依然还是主库。
主库挂了,如何让从库变为主库?(冷处理)
可以手动设置,在从库的服务上:使用以下命令 slaveof no one 将slave提升为master,在把宕机的主库手动设置为从库,使用 slvaeof ip 端口号;
热处理
redis哨兵模式