官方地址:https://redis.io/topics/cluster-tutorial
为 Cluster 启动 6 台 Redis 服务器,准备 6 台 Redis 服务器,下载 Redis 服务器:https://github.com/MicrosoftArchive/redis/releases

CV 复制 6 台出来,修改服务器配置:
Redis-7000
port 7000 # 端口号
daemonize yes # 以守护进程方式运行
cluster-enabled yes # 表示这是一个 Cluster 节点
cluster-config-file nodes-7000.conf # Cluster 信息配置文件, 内容会自动生成
cluster-require-full-coverage no # 是否集群中所有节点都能提供服务, 才对外提供服务
cluster-node-timeout 15000 # 故障转移或者节点超时时间Redis-7001
port 7001 # 端口号
daemonize yes # 以守护进程方式运行
cluster-enabled yes # 表示这是一个 Cluster 节点
cluster-config-file nodes-7001.conf # Cluster 信息配置文件, 内容会自动生成
cluster-require-full-coverage no # 是否集群中所有节点都能提供服务, 才对外提供服务
cluster-node-timeout 15000 # 故障转移或者节点超时时间Redis-7002
port 7002 # 端口号
daemonize yes # 以守护进程方式运行
cluster-enabled yes # 表示这是一个 Cluster 节点
cluster-config-file nodes-7002.conf # Cluster 信息配置文件, 内容会自动生成
cluster-require-full-coverage no # 是否集群中所有节点都能提供服务, 才对外提供服务
cluster-node-timeout 15000 # 故障转移或者节点超时时间Redis-7003
port 7003 # 端口号
daemonize yes # 以守护进程方式运行
cluster-enabled yes # 表示这是一个 Cluster 节点
cluster-config-file nodes-7003.conf # Cluster 信息配置文件, 内容会自动生成
cluster-require-full-coverage no # 是否集群中所有节点都能提供服务, 才对外提供服务
cluster-node-timeout 15000 # 故障转移或者节点超时时间Redis-7004
port 7004 # 端口号
daemonize yes # 以守护进程方式运行
cluster-enabled yes # 表示这是一个 Cluster 节点
cluster-config-file nodes-7004.conf # Cluster 信息配置文件, 内容会自动生成
cluster-require-full-coverage no # 是否集群中所有节点都能提供服务, 才对外提供服务
cluster-node-timeout 15000 # 故障转移或者节点超时时间Redis-7005
port 7005 # 端口号
daemonize yes # 以守护进程方式运行
cluster-enabled yes # 表示这是一个 Cluster 节点
cluster-config-file nodes-7005.conf # Cluster 信息配置文件, 内容会自动生成
cluster-require-full-coverage no # 是否集群中所有节点都能提供服务, 才对外提供服务
cluster-node-timeout 15000 # 故障转移或者节点超时时间注册服务器进程
redis-server.exe --service-install redis.windows-service.conf --service-name Redis7000redis-server.exe --service-install redis.windows-service.conf --service-name Redis7001redis-server.exe --service-install redis.windows-service.conf --service-name Redis7002redis-server.exe --service-install redis.windows-service.conf --service-name Redis7003redis-server.exe --service-install redis.windows-service.conf --service-name Redis7004redis-server.exe --service-install redis.windows-service.conf --service-name Redis7005启动相关 Redis 服务器

测试读写

让 6 台 Redis 服务器相互握手
redis-cli -h 127.0.0.1 -p 7000 cluster nodesredis-cli -h 127.0.0.1 -p 7000 cluster meet 127.0.0.1 7001redis-cli -h 127.0.0.1 -p 7000 cluster meet 127.0.0.1 7002redis-cli -h 127.0.0.1 -p 7000 cluster meet 127.0.0.1 7003redis-cli -h 127.0.0.1 -p 7000 cluster meet 127.0.0.1 7004redis-cli -h 127.0.0.1 -p 7000 cluster meet 127.0.0.1 7005
在如上握手的脚本当中,你可以观察发现,只有 7000 服务器与其它 Redis 服务器一一进行了握手,那么还需要 7001 与其它服务器在重复进行握手一次嘛,答:其实是不需要的,这个原理其实就像现实生活当中的认识新朋友原理很像,假如:赵六 认识 张三, 张三认识 李四 和 王五, 那么通过张三就可以让赵六、李四、王五相互认识。

测试读写

给分片服务器分配槽
分别给不同的服务器进行分配槽的时候需要执行如下的指令进行一一分配,那么有 16383 那么岂不是疯了吗,是吧,这个时候呢,就有了下方的 windows 脚本的出现。
redis-cli -h 127.0.0.1 -p 7000 cluster addslots 0redis-cli -h 127.0.0.1 -p 7001 cluster addslots 5462redis-cli -h 127.0.0.1 -p 7002 cluster addslots 16383这样子就不需要我们人为的去进行一一分配了,交给机器即可:
addslots.bat
@echo off
for /l %%i in (0,1,5461) do (
redis-cli -h 127.0.0.1 -p 7000 cluster addslots %%i
)
pause创建如上脚本文件,然后拖拽到对应的目录当中去然后在点击文件运行执行即可:


关于 7001 与 7002 同上即可,改一下脚本当中的 Redis 端口号 与分配的 范围,然后依次执行分配好即可:
7001:
@echo off
for /l %%i in (5462,1,10991) do (
redis-cli -h 127.0.0.1 -p 7001 cluster addslots %%i
)
pause7002:
@echo off
for /l %%i in (10992,1,16383) do (
redis-cli -h 127.0.0.1 -p 7002 cluster addslots %%i
)
pause分配了之后在查看所分配的槽:

测试:

去 7002 当中进行设置存储结果如下:

完毕,接下来就是开始搭建分配主从关系了。
分配主从关系
redis-cli -h 127.0.0.1 -p 7000 cluster nodes
redis-cli -h 127.0.0.1 -p 7003 cluster replicate 7000node-idredis-cli -h 127.0.0.1 -p 7004 cluster replicate 7001node-idredis-cli -h 127.0.0.1 -p 7005 cluster replicate 7002node-id
分配之后的结果如下:

测试自动保证高可用性
打开 windows 的服务管理页面将 redis7000 服务关闭,然后在查看 Redis-Custer 当中的主从结构即可测试:










