Redis -- 实战篇

一、基于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

五、参考文献

  1. 你管这破玩意叫哨兵?

你可能感兴趣的:(Redis -- 实战篇)