首页 > 数据库 >lettuce连接池连接redis失败

lettuce连接池连接redis失败

时间:2022-10-12 17:48:59浏览次数:35  
标签:core redis springframework lettuce io import 连接池

原文链接: 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>
复制代码

标签:core,redis,springframework,lettuce,io,import,连接池
From: https://www.cnblogs.com/fswhq/p/16784828.html

相关文章

  • Redis持久化实现的简单过程
    Redis有3种实现持久化的方式:AOF日志、RDB快照、混合持久化Redis写入AOF日志的过程Redis执行完写操作命令后,将命令追加到server.aof_buf缓冲区通过write()系统调用,将a......
  • Redis实现搜索历史
    需求:实现搜索历史最大保存N条,保存N天一.RedisTemplate Stringkey=RedisKeyPrefix.识虫历史记录.getKey()+SecurityUtils.getLoginUser().getUser().getUserI......
  • Redis 的快速介绍及其基本数据类型和操作
    Redis简介​​Redis​​是一个主要由开发者SalvatoreSanfilippo(Antirez)开发的开源内存数据结构存储器,用于改进其网站的可伸缩性,可以用作数据库、缓存和消息代理等,可以在......
  • redis-介绍
    1、前置知识常识 磁盘和内存中常识 1、寻址 内存中ns级别 磁盘中ms级别 2、带宽 磁盘:百兆到G的的级别,现在的固态硬盘可以达到1-3G中 iobuffer 磁盘磁道、扇区,......
  • 【redis】主从同步原理
    1.为什么需要主从同步在使用redis服务的时候如果时单机服务,一旦单机服务宕机了,那么可能导致我们整个系统处于不可用状态,或者当系统的访问量大了以后单机的redis服......
  • redis基础系列~单线程与多线程
    纯内存KV操作redis的操作都是在内存实现的,众所周知,在计算机的世界中,CPU的速度是远大于内存的速度的,同时内存的速度也是远大于硬盘的速度,所以非常快.所以内存的大小......
  • Redis学习秘籍
    目录​​Redis​​​​1.NoSQL的引言​​​​2.为什么是NoSQL​​​​3.NoSQL的四大分类​​​​3.1键值(Key-Value)存储数据库​​​​3.2列存储数据库海量数据大数......
  • Redis哨兵机制
    1、哨兵机制Redis的哨兵机制就是解决我们以上主从复制存在缺陷(选举问题),解决问题保证我们的Redis高可用,实现自动化故障发现与故障转移。2、哨兵机制的原理1.哨兵机制每......
  • redis防火墙设置
    关闭防火墙:1systemctlstopfirewalld.service#停止firewall2systemctldisablefirewalld.service#禁止firewall开机启动3systemctlstartfirewalld.service#......
  • 【博学谷学习记录】超强总结,用心分享|狂野架构师redis淘汰机制
    目录redis淘汰机制淘汰策略LRU算法LFU算法如何获取及设置内存淘汰策略redis淘汰机制淘汰策略1.noeviction(默认策略):默认情况下,Redis在使用的内存空间超过maxmemory......