SpringBoot连接redis-cluster报错Cannot determine a partition to read for slot

8,799 阅读1分钟

报错信息

使用SpringBoot连接本地Docker搭建的Redis-Cluster的时候,报如下错误

Caused by: io.lettuce.core.RedisException: Cannot determine a partition to read for slot 6836

看意思是说找不到6836的slot,按理说刚启动的集群,不会被删除的,于是使用redis-cli的命令进行检查

检查修复

进入redis Docker容器

docker exec -it 4688b2715f4a /bin/bash

其中将4688b2715f4a替换为自己的redis-cluster的容器ID

执行检查命令

首先进行检查

root@4688b2715f4a:/data# redis-cli --cluster check 172.17.0.2:7000

显示如下信息

172.17.0.2:7000 (7307aefd...) -> 0 keys | 16384 slots | 0 slaves.
[OK] 0 keys in 1 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 172.17.0.2:7000)
M: 7307aefd72f07b7686a03ee14cd473c9ff93f629 172.17.0.2:7000
   slots:[0-16383] (16384 slots) master
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[ERR] Not all 16384 slots are covered by nodes.

修复

redis-cli --cluster fix 172.17.0.2:7000

过程中会显示是否执行的询问,直接回车即可,修复完成后继续修复7001,7002端口的master

注意:172.17.0.2替换为自己的实际IP,7000、7001、7002位Master的端口(替换为自己实际的端口号)

参考

blog.csdn.net/gao_grace/a…