redis集群拓扑结构自动更新

背景

  redis集群的时候,有一个master节点挂机了。

  springboot中调用redis的时候,会测试连接每一个node节点。

  这时候就会报错,连不上XX.XX.XX.XX:port(ip:port)。

原因

  redis集群采用了默认的luttuce连接池技术。

  (lettuce和jedis pool都是一种连接redis的池化方式,

  springboot中构建RedisConnectionFactory bean的时候,

  需要两个configure 参数:pool相关和redis cluster相关)

  lettuce连接redis集群的时候,默认不会改变redis集群的拓扑结构

  redis配置的节点中,一个挂机了,但是集群拓扑结构没有更新,

  lettuce维持有问题的拓扑机构,所以报错,所以需要更新rediscluster拓扑结构。

  --及时更新拓扑结构

修复手段

  扩展lettuce connection factory 相关的bean。

  让这个bean及时更新redis集群的拓扑结构,就是lettuce连接池不维持挂机的节点。

解决问题参考文档

lettuce官文:

https://lettuce.io/core/release/reference/index.html#clientoptions.cluster-specific-options 

网上同样案例(如果你的redis集群设置了密码,这个参考中就需要设置密码):

https://my.oschina.net/shichangcheng/blog/3135417

原文地址:https://www.cnblogs.com/windy13/p/12679552.html