Spring boot Redis客户端无法刷新redis集群(默认lettuce)

场景

当redis集群master节点宕机后,对应的slaver节点变为master提供服务,但是Lettuce客户端还是会出现无法连接异常。

Caused by: io.netty.channel.AbstractChannel$AnnotatedConnectException: finishConnect(..) failed: Connection refused: /172.0.0.1:7001
Caused by: java.net.ConnectException: finishConnect(..) failed: Connection refused
    at io.netty.channel.unix.Errors.throwConnectException(Errors.java:124) ~[netty-transport-native-unix-common-4.1.51.Final.jar!/:4.1.51.Final]

原因分析

spring-data-redis包中实现的Lettuce客户端时,默认没有开启客户端刷新功能。Jedis客户端默认实现了集群刷新功能。

处理办法

spring配置中开启自动刷新功能,spring boot2.3.0以上版本。

spring:
  application:
    name: lizz-gateway
  #***********************redis***********************
  redis: #redis配置
    lettuce:
      cluster:
        refresh:
          adaptive: true #自动刷新集群 默认false关闭
#          period: 10M #定时刷新

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring Boot 中,使用 Lettuce 连接 Redis 时,可以通过自适应配置来适配单机版 Redis集群Redis。自适应配置是指,当配置文件中的属性值符合某种特定的格式时,Lettuce 会自动识别当前 Redis 环境是否为集群版,并自动进行相应的连接池配置。 具体来说,当 `spring.redis.host` 属性为空时,Lettuce 将会按照集群Redis 的方式进行连接。此时,需要在 `spring.redis.cluster.nodes` 属性中指定 Redis 集群中所有节点的地址和端口号,以逗号分隔。例如: ```properties # Redis 自适应集群版连接池配置 spring.redis.host= spring.redis.port= spring.redis.password=your_password spring.redis.cluster.nodes=127.0.0.1:6379,127.0.0.1:6380,127.0.0.1:6381 spring.redis.timeout=1000 spring.redis.lettuce.pool.max-active=8 spring.redis.lettuce.pool.max-wait=-1 spring.redis.lettuce.pool.max-idle=8 spring.redis.lettuce.pool.min-idle=0 ``` 当 `spring.redis.host` 属性不为空时,Lettuce 将会按照单机版 Redis 的方式进行连接。此时,只需要在 `spring.redis.host` 和 `spring.redis.port` 属性中指定 Redis 服务器的地址和端口号即可。例如: ```properties # Redis 自适应单机版连接池配置 spring.redis.host=127.0.0.1 spring.redis.port=6379 spring.redis.password=your_password spring.redis.timeout=1000 spring.redis.lettuce.pool.max-active=8 spring.redis.lettuce.pool.max-wait=-1 spring.redis.lettuce.pool.max-idle=8 spring.redis.lettuce.pool.min-idle=0 ``` 需要注意的是,当 `spring.redis.host` 属性为空时,必须同时指定 `spring.redis.cluster.nodes` 属性,否则会抛出异常。此外,当使用自适应配置连接集群Redis 时,需要在 `pom.xml` 文件中添加 Lettuce 依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>io.lettuce</groupId> <artifactId>lettuce-core</artifactId> <version>5.3.4.RELEASE</version> </dependency> ``` 以上就是在 Spring Boot 中使用 Lettuce 进行自适应配置连接单机版 Redis集群Redis 的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

lizz666

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

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

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

打赏作者

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

抵扣说明:

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

余额充值