【Redis集群学习】Windows10部署Redis集群

搭建 Redis 集群

需要准备 redis5 及以上版本,否则报错 Unrecognized option or bad number of args for: '--cluster'

下载链接:https://github.com/tporadowski/redis/releases/download/v5.0.14.1/Redis-x64-5.0.14.1.zip

其他版本:Releases · tporadowski/redis

准备配置文件

文件名 port appendonly cluster-enabled cluster-config-file cluster-node-timeout
redis-6380.windows.conf 6380 yes yes nodes-6380.conf 15000
redis-6381.windows.conf 6381 yes yes nodes-6381.conf 15000
redis-6382.windows.conf 6382 yes yes nodes-6382.conf 15000

启动redis

redis-server.exe redis-6380.windows.conf
redis-server.exe redis-6381.windows.conf
redis-server.exe redis-6382.windows.conf

redis-6380

redis-6381

redis-6382

创建redis集群

redis-cli --cluster create 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 --cluster-replicas 0

集群连接

​ 随意选一个节点连接便可进入集群

redis-cli.exe -c -p 6380

查看集群节点状态

cluster nodes

集群测试

读写测试
set测试

​ 如上图所示,执行 set 命令前在 6380节点 ,执行 set 命令时转到了 6382 节点, get 获取 value 时在 6382节点 获取

​ 再次测试如上图所示。

get测试

​ 现已知 mykey 在 6382节点 , mykey1 在 6380节点 , 测试从 6380节点 获取 mykey

​ 测试结果如上图所示。

​ 可知在通过key获取value时,集群会计算出key所在的实例,并从该实例下获取数据。

​

key应在的槽位计算测试

​ 计算槽位

cluster keyslot <key>

测试用例:

​ key:test

​ value:1

计算test将放置的槽位

#计算槽位
127.0.0.1:6382> cluster keyslot test
(integer) 6918

#集群中无test
127.0.0.1:6382> get test
-> Redirected to slot [6918] located at 127.0.0.1:6381
(nil)

#插入数据
127.0.0.1:6381> set test 1
OK
127.0.0.1:6381> get test
"1"
127.0.0.1:6381>

上述测试可以看出:固定的key的落位是确定的,且在get不存在的key时,也会先计算,再去固定槽位查找

从节点测试

重新搭建集群

文件名 port appendonly cluster-enabled cluster-config-file cluster-node-timeout
redis-6380.windows.conf 6380 yes yes nodes-6380.conf 15000
redis-6381.windows.conf 6381 yes yes nodes-6381.conf 15000
redis-6382.windows.conf 6382 yes yes nodes-6382.conf 15000
redis-6383.windows.conf 6383 yes yes nodes-6383.conf 15000
redis-6384.windows.conf 6384 yes yes nodes-6384.conf 15000
redis-6385.windows.conf 6385 yes yes nodes-6385.conf 15000

创建集群,每个master分配一个slave

redis-cli --cluster create --replicas 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385 --cluster-replicas 1

set测试

get测试

​ 6381也正常

故障迁移测试

将有数据的6381节点挂掉,再次测试能否get到数据

D:\environment\Redis-Cluster\Redis-x64-5.0.14.1>redis-cli.exe -c -p 6381
127.0.0.1:6381> shutdown
not connected>

由图可知:6384代替6381成为了主节点

get数据测试

测试正常。在6381上的数据没有因为6381挂掉而无法访问。

重新启动6381并查看集群信息

可以看到6384依旧是主节点,且数据依旧在6384上。而重新启动后的6381成为了6384的从节点

此时挂掉6384

会发现关闭失败。那直接杀掉进程呢

可以看到6381又成为了主节点

但此时如果把6381也杀掉,就会只剩下两主两从,而且数据也不在了:0 keys

posted @ 2025-04-25 19:36  就好这口  阅读(42)  评论(0)    收藏  举报