集群模式
主从模式,只存在一个master的问题

于是在 redis3.0 诞生了集群模式
# 1、创建 redis-cluster 文件夹
在/usr/local目录下创建 redis-cluster 文件夹
cd /usr/local
mkdir redis-cluster
1
2
2
# 2、创建 7001-7006 文件夹
在 redis-cluster 中创建 7001-7006 文件夹
cd /usr/local/redis-cluster
mkdir 7001 7002 7003 7004 7005 7006
1
2
2
# 3、复制redis.conf到7001~7006文件夹中
cp /usr/local/redis-5.0.7/redis.conf /usr/local/redis-cluster/7001/
1
# 4、修改 redis.conf 中的内容
修改 7001~7006 中redis.conf 中的内容
进入 7001文件夹 vim redis.conf 后 输入 /bind 可以快速定位到关键字的位置
需要修改的内容如下
bind 0.0.0.0 # 允许所有机器可以访问
port 7001 # 暴露的端口
daemonize yes # 后台启动
pidfile /var/run/redis_7001.pid # 当redis在后台运行的时候,redis会默认把pid文件放在/var/run/redis.pid下,
# 也可以配置到其它地址。当运行多个redis服务器时,需要指定不同的pid文件和端口
dir "/usr/local/redis-cluster/7001"
logfile "/var/log/redis/7001/redis.log" # 日志文件 可改可不改
appendonly yes
cluster-enabled yes # 开启集群
cluster-config-file nodes-7001.conf # 放开注释 每个集群节点自己的配置文件
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
后续将 7002~7006 继续如上操作
# 5、启动redis集群服务
注意需要先安装好redis服务 redis安装->基础安装
cd /usr/local/redis/bin
# 启动 7001 ~ 7006 的集群服务
./redis-server /usr/local/redis-cluster/7001/redis.conf
./redis-server /usr/local/redis-cluster/7002/redis.conf
./redis-server /usr/local/redis-cluster/7003/redis.conf
./redis-server /usr/local/redis-cluster/7004/redis.conf
./redis-server /usr/local/redis-cluster/7005/redis.conf
./redis-server /usr/local/redis-cluster/7006/redis.conf
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
查看集群是否启动成功
ps -ef | grep redis
1
# 6、创建redis集群
cd /usr/local/redis/bin
./redis-cli --cluster create ip:7001 ip:7002 ip:7003 ip:7004 ip:7005 ip:7006 --cluster-replicas 1
# ip 记得替换成你自己的ip 比如我这边本地测试替换成 169.254.182.30
# --cluster-replicas 1 表示 主从 配置比 1表示的是 1:1,比如我现在6个redis服务那么 会分配 3个主3个从
1
2
3
4
2
3
4
# 7、登录客户端进行测试
cd /usr/local/redis/bin
./redis-cli -c -h 169.254.182.30 -p 7001
1
2
2
# 进行设置值测试
上图可见 7001 上设置值时存储到7002上,然后7002设置值存储到7003上,然后7003设置值存储到7003,然后7003设置值存储到7002上,然后7002设置值存储到7001上
由此可见,主服务上面的数据之和才是所有的数据
登录主服务器查看已存储的key 可以很明显观察到存储的数据
# 查看主从服务器角色
cd /usr/local/redis/bin # 进入启动目录
./redis-cli -c -h 169.254.182.30 -p 7001 # 登录客户端
info # 查看当前redis服务信息
1
2
3
2
3
分别登录 7001 和 7004 客户端 可以看到主从服务器的数据是一致的(主服务器的数据会自动同步到从服务器)
现在有这么个情况,如果主服务器死了,看下会发生什么情况
netstat -apn | grep 7001 # 查看 7001 进程
kill -9 pid # 杀死7001 主服务器
1
2
2
7001 主服务器死了之后,我们登录进入 7004 中查看 info 信息
./redis-cli -c -h 169.254.182.30 -p 7004
info
1
2
2
可以看见 7004 变成了主服务器,现在我们再把 7001 重启下
./redis-server /usr/local/redis-cluster/7001/redis.conf # 启动 7001
./redis-cli -c -h 169.254.182.30 -p 7004 # 进入7004
info # 查看 7004 信息
1
2
3
2
3
由上图可以看见 7001 变成 7004 的从服务器了
总结:主服务器死了,会从 从服务器中选中一个成为主服务器,当(杀死的)主服务器重启后,将会自动变成从服务器 和 新主服务器关联
最近更新: 2025/07/30, 15:37:56