lettuce连接池连接redis失败
2023-09-11 14:20:10 时间
原文链接: https://www.cnblogs.com/yangkangIT/p/16016279.html
背景
新项目为了推进多环境(test,pre,prd)部署,在测试环境测试通过之后部署预发环境的时候,服务一直报错,提示【io.lettuce.core.RedisCommandExecutionException: NOAUTH Authentication required.】,这个提示一般情况下的意思是:redis服务配置了密码,客户端链接的时候没有填写密码。但是代码和测试环境同一套的,在测试环境都正常测试通过了的。
分析
先查看了测试环境和预发环境的redis是不是同一个版本的(因为你不知道运维给你的版本会是多少年前的老古董),预发环境是4.1.1的。然后我的springboot的版本是2.4.13的,使用的lettuce是6.0.8的,Lettuce 6.x版本开始,使用RESP3(Redis 6.x引入)的HELLO命令进行版本自适应判断,但是对于不支持HELLO命令的低版本实例,兼容性存在一定问题。所以对于低版本的实例,建议直接在Lettuce中指定使用RESP2协议(兼容Redis 4/5)的版本来使用。
解决方案
第一种:修改协议
1 import io.lettuce.core.ClientOptions; 2 import io.lettuce.core.protocol.ProtocolVersion; 3 import org.springframework.boot.autoconfigure.data.redis.LettuceClientConfigurationBuilderCustomizer; 4 import org.springframework.context.annotation.Configuration; 5 import org.springframework.data.redis.connection.lettuce.LettuceClientConfiguration; 6 7 @Configuration 8 public class SpringConfig implements LettuceClientConfigurationBuilderCustomizer { 9 10 @Override 11 public void customize(LettuceClientConfiguration.LettuceClientConfigurationBuilder clientConfigurationBuilder) { 12 // manually specifying RESP2 13 clientConfigurationBuilder.clientOptions(ClientOptions.builder() 14 .protocolVersion(ProtocolVersion.RESP2) 15 .build()); 16 } 17 }
第二种:使用低版本的lettuce
1 <dependency> 2 <groupId>org.springframework.boot</groupId> 3 <artifactId>spring-boot-starter-data-redis</artifactId> 4 <exclusions> 5 <exclusion> 6 <groupId>io.lettuce</groupId> 7 <artifactId>lettuce-core</artifactId> 8 </exclusion> 9 </exclusions> 10 </dependency> 11 <dependency> 12 <groupId>io.lettuce</groupId> 13 <artifactId>lettuce-core</artifactId> 14 <version>5.3.7.RELEASE</version> 15 <scope>compile</scope> 16 </dependency>
相关文章
- Redis Desktop Manager 利用ssh连接 Redis
- Redis Desktop Manager连接Redis
- 15天玩转redis —— 第二篇 基础的字符串类型
- C#Redis哈希Hashes
- Redis学习(8)-redis其他特性
- Redis学习(2)-redis安装
- Redis的Python客户端redis-py说明文档(转)
- Redis-Cluster实战--5.使用redis-cli安装
- spring boot下JedisCluster方式连接Redis集群的配置
- springboot集成redis配置多数据源
- Atitit redis使用 attilax 艾提拉总结 1.1. Redis默认有16个库,默认连接的是 index=0 的那一个。解决与原来不方便查询查看的问题1 1.2. redis不是现
- 在 SAP Kyma 上使用 Redis 服务
- 〖Python 数据库开发实战 - Python与Redis交互篇②〗- 利用 redis-py 实现字符串类型的常用指令操作
- 〖Python 数据库开发实战 - Python与Redis交互篇⑧〗- 利用 redis-py 实现缓存观众投票数据信息案例
- 面试必问:如何实现Redis分布式锁
- 聊聊游戏业务怎么用高斯Redis
- 华为云GuassDB(for Redis)发布全新版本推出:Lua脚本和SSL连接加密
- redis 加锁与解锁的详细总结,解决线程并发导致脏数据
- 深入浅出Redis-redis哨兵集群
- RedisInsight redis官方可视化工具 —— 筑梦之路
- Redis 3.2.1集群搭建
- 02-EditPlus连接Centos7修改Redis配置文件(建议FinalShell修改更加方便)
- 【redis】Redis缓存失效、雪崩、穿透、击穿、并发等案例分析难题解决方案
- 【redis】Redis为什么能抗住10万并发?
- 阿里云Redis之:通过阿里云自带的连接工具连接Redis(十八)
- Redis Set集合类型字符串(六)