一、基于Docker启动一个Redis服务
// 拉去镜像
docker pull redis
// -d 以后台的方式运行
// -name 给这个实例起名为"redis"
docker run -d --name redis redis
// 进入刚才启动的、名为"redis"的Docker实例,并执行"redis-cli"命令
docker exec -it redis redis-cli
// 测试redis服务:1. 先执行set操作
set key "hello, redis"
// 测试redis服务:2. 执行get操作,查看返回值,应该返回"hello, redis"
get key
二、实现Redis主从模式
// 启动一个名为"redis-slave"的实例
docker run -d --name redis-slave redis
// 查看刚才启动的2个实例的IP地址(等会你还会回来看我)
docker inspect redis | grep -i ipaddress
docker inspect redis-slave | grep -i ipaddress
// 进入"redis-slave"容器
docker exec -it redis-slave redis-cli
// 查看当前实例的角色是主还是从(此时2个实例返回的应该都是"master")
info replication
// 在"redis-slave"中设置当前实例为另一个实例的从节点
// 另一个实例通过IP + 端口的形式定位
// IP:是刚才通过"docker inspect"那一步得到的
// 端口:刚才启动实例时使用的是默认值(6379)
slaveof 172.17.0.2 6379
// 在"redis"实例中执行的话,可以看到有一台slave
// 在"redis-slave"实例中执行的话,可以看到角色变为"slave"了
info replication
三、实现Redis哨兵模式
// 启动一个名为"redis-sentinel"的实例
docker run -d --name redis-sentinel redis
// 进入"redis-sentinel"容器
docker exec -it redis-sentinel /bin/bash
// 写入配置文件
echo '
# 开启保护模式
protected-mode no
# 监控master节点,当有一台机器判定为主观下线时就执行主从切换
sentinel monitor redis-master 172.17.0.2 6379 1
' > sentinel.conf
// 启动哨兵
redis-sentinel ./sentinel.conf
四、实现Redis集群模式
// 启动6个实例(3主3从)
docker run -d --name redis-a0 redis --cluster-enabled yes
docker run -d --name redis-b0 redis --cluster-enabled yes
docker run -d --name redis-c0 redis --cluster-enabled yes
docker run -d --name redis-a1 redis --cluster-enabled yes
docker run -d --name redis-b1 redis --cluster-enabled yes
docker run -d --name redis-c1 redis --cluster-enabled yes
// 启动集群模式
redis-cli -c cluster meet 172.17.0.3 6379
...
// 分配槽位(需要登陆a0 ~ c0)
redis-cli -c cluster addslots {0..5000}
redis-cli -c cluster addslots {5001..10000}
redis-cli -c cluster addslots {10001..16383}
// 设置从节点
cluster replicate {ID}
// 查看集群信息
cluster info
cluster nodes
五、参考文献
- 你管这破玩意叫哨兵?
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。