Caused by: io.lettuce.core.RedisCommandExecutionException: NOAUTH Authentication required.【Springboot 连接 腾讯 redis 认证失败解决】

发布时间 2023-12-08 17:28:13作者: 山河已无恙

原文链接 : https://blog.csdn.net/De_Buffer/article/details/132492287

最终解决方法
虽然通过更换连接客户端为jedis解决了问题,但不符合发展趋势,lettuce已成为主流redis客户端,springboot2官方推荐,因此在这个保底方案基础上继续探究。终于!!
找到解决我的问题的一篇文章,跟着他的思路发现确实是lettuce的问题,是和redis版本不兼容。系统中引入的spring-lettuce依赖包版本到6.xx了,而redis服务的版本只有5.xx。官方文档介绍lettuce6.0需要匹配redis6,其中握手协议同时支持resp2/3,6.0以下低版本的redis需要使用resp2。
最终的操作:

import io.lettuce.core.ClientOptions;
import io.lettuce.core.protocol.ProtocolVersion;
import org.springframework.boot.autoconfigure.data.redis.LettuceClientConfigurationBuilderCustomizer;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.lettuce.LettuceClientConfiguration;

/**
 * @description lettuce客户端配置
 * @author 
 */
@Configuration
public class LettuceConfig implements LettuceClientConfigurationBuilderCustomizer {

    @Override
    public void customize(LettuceClientConfiguration.LettuceClientConfigurationBuilder clientConfigurationBuilder) {
        clientConfigurationBuilder.clientOptions(ClientOptions.builder().protocolVersion(ProtocolVersion.RESP2).build());
    }
}

5、还是根据报错信息(从lettuce.core包中抛出的异常)推断问题出在lettuce上面,但具体是啥问题暂不深究:通过修改连接方式为jedis成功连接上redis服务器(排除了pom的lettuce核心包)

<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>