io.lettuce.core.cluster.PartitionSelectorException: Cannot determine a partition to read for slot xx

文章讲述了在Springboot应用从单Redis迁移到集群Redis时遇到的PartitionSelectorException错误。报错原因是集群节点问题,需要检查和修复Redis集群节点,包括使用`redis-cli--clustercheck`和`--clusterfix`命令。如果这些方法无效,可能需要对每个节点执行清理和重置,包括flushall和clusterreset操作来重置节点状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、报错背景

Springboot项目在单redis切换到集群redis的时候报错:
io.lettuce.core.cluster.PartitionSelectorException: Cannot determine a partition to read for slot 10089.

2、报错原因

自然是集群redis的节点有问题,需要重新刷新一下节点的信息,大部分情况需要修理一下。

3、解决办法(一)

#节点检查,每个节点都进行检查
./redis-cli --cluster check xxx.xxx.xxx.xxx:6379 -a 123456

#节点修复,建议每个节点都进行修复
./redis-cli --cluster fix xxx.xxx.xxx.xxx:6379 -a 123456

节点修复过程中会弹出如下确认信息:
Fix these slots by covering with a random node? (type 'yes' to accept):
输入yes重新分配slots即可。

4、解决办法(二)

如果第三步如果并没有解决的话,就需要接入每个节点进行重置之后再试。

#清理重置每个节点

#连接节点
./redis-cli -h 10.19.128.135 -p 6380

#密码授权
auth 123456

#设置可写(非必要)
config set slave-read-only no

#清理并重置节点
flushall
cluster reset
引用\[1\]和\[2\]中提到的错误信息是关于连接Redis时出现的异常。根据这些错误信息,可能的原因和解决方法如下: 1. 如果是远程访问Redis: - 检查redis.conf文件中的配置,默认情况下只允许本机访问Redis,需要将bind 127.0.0.1这一项注释掉。 - 将protected-mode yes改为no,允许外部访问。 - 检查虚拟机防火墙是否关闭。 - 修改完配置后,需要重启Redis。 2. 如果是本机访问Redis: - 检查配置文件中Redis的IP地址和端口是否正确,一般默认是127.0.0.1:6379。 - 设置连接超时时间,可以在配置文件中添加spring.redis.timeout=10000。 - 检查配置文件中的连接密码是否正确,如果没有设置密码,可以不写。 - 检查本地Redis是否处于启动状态。 另外,引用\[3\]中提到的解决思路也可以参考: 1. 修改application.yml中的redis配置,将连接超时时间设置为合适的值。 2. 在Linux中找到redis的配置文件redis.conf,使用命令vim redis.conf进行编辑: - 注释掉bind 127.0.0.1,允许外部访问Redis。 - 将protected-mode yes改为protected-mode no,允许外部访问。 - 将daemonize yes改为daemonize no,让Redis在后台运行。 综上所述,根据错误信息"Redis exception; nested exception is io.lettuce.core.RedisException: Cannot determine a node to read",可以尝试根据以上方法进行排查和解决。 #### 引用[.reference_title] - *1* *3* [Unable to connect to Redis; nested exception is io.lettuce.core.RedisConnectionException: 我的解决办法](https://blog.csdn.net/ohh_lang/article/details/106067037)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Unable to connect to Redis; nested exception is io.lettuce.core.RedisConnectionException:](https://blog.csdn.net/qq_45745319/article/details/123754785)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cgv3

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值