docker pull redis:latest
redis集群是为了强化redis的读写能力。
redis集群中,每一个redis称之为一个节点。 节点一般分为主节点和从节点
一直将自己数据同步到从节点
主节点可读,可写,但是从节点只读,提高读的能力并且保证数据的安全性
最简单版redis集群
在网上看到很多redis集群处理,不过大多都特别复杂,这里记录一个简单版的redis处理
首先启动redis容器,这里启动三个容器,其中一个为主两个为从
docker run --name redis-6379 -p 6379:6379 -d redis
docker run --name redis-6380 -p 6380:6379 -d redis
docker run --name redis-6381 -p 6381:6379 -d redis
启动后运行docker ps查看是否启动成功
然后使用 docker inspect 容器ID 查看容器内网IP地址
使用redis-6379为主机,其余两台为从机使用
docker exec -ti 容器ID /bin/bash
分别进入三个Redis容器
进入容器后,使用
redis-cli
命令,连接redis服务端连接服务后,使用
info replication
查看当前机器的角色,未配置前,三台redis均为 master主机
分别在redis-6380和redis-6381使用
SLAVEOF 172.17.0.2 6379
命令,这里的172.17.0.2,是redis-6379的内部IP地址, 在redis-6379 使用 info replication 命令,验证主从关系是否配置成功
哨兵模式
当使用redis时可能会因为异常使主服务器宕机,这时候需要人工启动,但是费事费力,这个时候就需要使用哨兵模式,哨兵模式的原理是启动一个进程,此进程独立运行,进程向机器发送命令,等待redis响应,如果这个时候主机宕机会自动切换到其他机器并且通过发布订阅模式通知其他从服务器更换主机地址
docker exec -it redis-6380 /bin/bash
redis-sentinel sentinel.conf
docker run -d --name s1 -p 26379:26379 -v /root/app/redis:/data redis redis-sentinel sentinel.conf
docker run -d --name redis-6380 -p 6380:6380 -v /root/app/redis:/data redis redis-server redis-6380.conf
sentinel monitor mymaster 172.30.0.3 6379 1
docker run -d --name s1 -p 26379:26379 -v /root/app/redis:/data redis redis-sentinel sentinel.conf