Bootstrap

Springboot整合redis集群

springboot 集成配置

spring:
  redis:
    cluster:
      #失败重连次数
      max-redirects: 3
      nodes: 127.0.0.1:6391,127.0.0.1:6392,127.0.0.1:6391,127.0.0.1:6393,127.0.0.1:6394,127.0.0.1:6395,127.0.0.1:6396
    lettuce:
      pool:
        enabled: true
        max-wait: -1ms
        #max-idle 最大空闲数
        #max-active 最大活跃数
        #maxactive和maxidle这两个值最好设置得比较接近一些,
        #不然maxidle设置得太小,单方面把maxactive调得很高,这样会导致频繁的连接销毁和新建,
        #这跟连接池的理念就相悖了。
        #为了提高性能,把maxactive调高,maxidle也相应调到一个接近的数字,
        #池中空闲的连接就会维持一个适当的数量,才达到较理想的性能调优。
        #除了redis连接池,其他连接池比如数据库连接池也同理可得。
        max-active: 8
        max-idle: 8
        min-idle: 0

问题1 如果6391宕机,那么springboot 还以使用集群环境吗

不能,后台会出现两种错误
no further information:/127.0.0.1:6391
command timed out after 1 minutes
原因是springboot 客户端没有动态感知到Rediscluster的最新集群信息。
springboot2.X版本,redis默认的连接池采用lettuce,当redis 节点发生变化后,lettuce默认是不会刷新节点拓扑,以获得服务器上最新的拓扑结构。

解决方法

 #解决 主机宕机 boot程序连接失败问题方法一
 #支持集群拓扑动态感应刷新,默认关闭默认false
      cluster:
        refresh:
          adaptive: true
          #动态刷新
          period: 2000
;