报错信息
Spring Boot项目中访问redis cluster报错:
redis.clients.jedis.exceptions.JedisClusterMaxRedirectionsException: Too many Cluster redirections?
原因分析
redis 绑定了多个ip
eg:
- redis.conf 文件中bind 172.0.0.1 192.168.186.1
- 在创建集群时host使用172.0.0.1 eg: redis-cli --cluster create 172.0.0.1:7000 172.0.0.1:7001 172.0.0.1:7002 172.0.0.1:7003 172.0.0.1:7004 172.0.0.1:7005 --cluster-replicas 1
问题修复
bind配置为主机ip,重建集群 eg:redis-cli --cluster create 192.168.186.1:7000 192.168.186.1:7001 192.168.186.1:7002 192.168.186.1:7003 192.168.186.1:7004 192.168.186.1:7005 --cluster-replicas 1
- 所有节点redi.conf文件中bind配置为主机ip
- 删除所有节点中的nodes.conf 、rdb文件
- kill所有redis进程
- 重新启动所有redis实例
- 重建集群 redis-cli --cluster create 192.168.186.1:7000 192.168.186.1:7001 192.168.186.1:7002 192.168.186.1:7003 192.168.186.1:7004 192.168.186.1:7005 --cluster-replicas 1
- 重启项目即可正常访问
如果重建集群时报错 :ERR] Node 192.168.186.1:7001 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
可参考edis-cli --cluster create 创建redis集群报错