Springboot整合lettuce密码错误io.lettuce.core.RedisCommandExecutionException: NOAUTH Authentication require
开发环境:springboot 2.4.3spring-boot-starter-data-redis 2.4.3redis 4.0lettuce 6.0.2问题描述:1、配置信息spring.redis.host=9.134.xxx.xxxspring.redis.port=6380spring.redis.password=spYKT*3342sddf2345Pwspring.redis.le
·
开发环境:
- springboot 2.4.3
- spring-boot-starter-data-redis 2.4.3
- redis 4.0
- lettuce 6.0.2
问题描述:
1、配置信息
spring.redis.host=9.134.xxx.xxx
spring.redis.port=6380
spring.redis.password=spYKT*3342sddf2345Pw
spring.redis.lettuce.pool.max-active=8
spring.redis.lettuce.pool.max-idle=8
spring.redis.lettuce.pool.max-wait=3000
spring.redis.lettuce.pool.min-idle=4
spring.redis.timeout=2s
2、报错日志
[2021-05-11 15:33:55.725] [lettuce-nioEventLoop-4-1] [DEBUG] [io.lettuce.core.protocol.CommandHandler:?] - [channel=0x0cec2b7a, /192.168.255.10:52795 -> /9.134.xxx.xxx:6379, chid=0x1] Completing command AsyncCommand [type=HELLO, output=GenericMapOutput [output=null, error='NOAUTH Authentication required.'], commandType=io.lettuce.core.protocol.Command]
[2021-05-11 15:33:55.729] [lettuce-nioEventLoop-4-1] [DEBUG] [io.lettuce.core.AbstractRedisClient:?] - Connecting to Redis at 9.134.xxx.xxx:6380, initialization
java.util.concurrent.CompletionException: io.lettuce.core.RedisCommandExecutionException: NOAUTH Authentication required.
at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:292)
at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:308)
at java.util.concurrent.CompletableFuture.uniCompose(CompletableFuture.java:943)
at java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:926)
at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:474)
at java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:1977)
at io.lettuce.core.RedisHandshake.lambda$tryHandshakeResp3$1(RedisHandshake.java:105)
at java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:760)
at java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:736)
at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:474)
at java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:1977)
at io.lettuce.core.protocol.AsyncCommand.doCompleteExceptionally(AsyncCommand.java:139)
at io.lettuce.core.protocol.AsyncCommand.completeResult(AsyncCommand.java:120)
at io.lettuce.core.protocol.AsyncCommand.complete(AsyncCommand.java:111)
at io.lettuce.core.protocol.CommandHandler.complete(CommandHandler.java:720)
at io.lettuce.core.protocol.CommandHandler.decode(CommandHandler.java:655)
at io.lettuce.core.protocol.CommandHandler.channelRead(CommandHandler.java:572)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
原因分析:
springboot简单整合redis,用的是lettuce客户端,提示没有授权,密码是对的,命令行验证过。所以,不应该是代码问题。也debug验证过,代码可以获取到密码配置项。
所以,应该是客户端问题,去官网搜一下issue,发现有人已经反馈过了。戳这里:bug
解决方案:
看了lettuce官网的release貌似还没解决这个问题,所以降级一下lettuce版本到5.3.7,问题解决了。
<!-- redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<exclusions>
<exclusion>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
<version>5.3.7.RELEASE</version>
<scope>compile</scope>
</dependency>
<!-- 要用redis连接池 必须有pool依赖-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.5.0</version>
</dependency>
更多推荐
已为社区贡献1条内容
所有评论(0)