当前位置: 首页 > news >正文

Spring Data Redis 报错 WRONGPASS invalid username-password pair问题解决

Spring Data Redis 报错 WRONGPASS invalid username-password pair问题解决

缘起

spring data redis版本:3.2.5
redis server版本:社区版6.0.2

新项目引入了redis,我就把原来的redis代码拷贝过来,但使用时报错:

Caused by: io.lettuce.core.RedisCommandExecutionException: WRONGPASS invalid username-password pairat io.lettuce.core.internal.ExceptionFactory.createExecutionException(ExceptionFactory.java:147)at io.lettuce.core.internal.ExceptionFactory.createExecutionException(ExceptionFactory.java:116)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:745)at io.lettuce.core.protocol.CommandHandler.decode(CommandHandler.java:680)at io.lettuce.core.protocol.CommandHandler.channelRead(CommandHandler.java:597)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)at java.base/java.lang.Thread.run(Thread.java:833)

查找问题

redis配置代码逻辑如下:

@Bean("lettuceConnectionFactory")public LettuceConnectionFactory lettuceConnectionFactory() {GenericObjectPoolConfig<RedisConnection> genericObjectPoolConfig = new GenericObjectPoolConfig<>();genericObjectPoolConfig.setMaxIdle(maxIdle);genericObjectPoolConfig.setMinIdle(minIdle);genericObjectPoolConfig.setMaxTotal(maxTotal);RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();redisStandaloneConfiguration.setDatabase(dbNo);redisStandaloneConfiguration.setHostName(host);redisStandaloneConfiguration.setPort(port);redisStandaloneConfiguration.setPassword(RedisPassword.of(password));LettuceClientConfiguration clientConfig = LettucePoolingClientConfiguration.builder().commandTimeout(Duration.ofMillis(timeOut)).poolConfig(genericObjectPoolConfig).build();return new LettuceConnectionFactory(redisStandaloneConfiguration, clientConfig);}@Bean("stringRedisTemplate")public StringRedisTemplate stringRedisTemplate(LettuceConnectionFactory redisConnectionFactory){StringRedisTemplate stringRedisTemplate = new StringRedisTemplate();stringRedisTemplate.setConnectionFactory(redisConnectionFactory);Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);// 设置值(value)的序列化采用Jackson2JsonRedisSerializer。stringRedisTemplate.setValueSerializer(jackson2JsonRedisSerializer);// 设置键(key)的序列化采用StringRedisSerializer。stringRedisTemplate.setKeySerializer(new StringRedisSerializer());stringRedisTemplate.setHashKeySerializer(new StringRedisSerializer());stringRedisTemplate.afterPropertiesSet();return stringRedisTemplate;}

怎么检查redis的host,端口和密码(格式为username:password形式)都是正确的。
最后发现,redisStandaloneConfiguration.setPassword(RedisPassword.of(password));这个要改造下。

解决

redis6.x,username和password要分开写
如果用户名和密码形式是username:password 那么5.x的写法是

redisStandaloneConfiguration.setPassword(RedisPassword.of(password));

如果用户名和密码形式是username:password 那么6.x的写法是

redisStandaloneConfiguration.setUsername(password.split(":")[0]);
redisStandaloneConfiguration.setPassword(RedisPassword.of(password.split(":")[1]));

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • vue 进入页面自动刷新并且只刷新一次
  • DevExpress WinForms自动表单布局,创建高度可定制用户体验(二)
  • 多角度解析高防CDN防御DDOS及CC攻击
  • python:面向对象
  • 10.11和10.8那个大(各种ai的回答)
  • C++合作开发项目:美术馆1.0
  • vue3 组件通信 mitt
  • el-upload照片墙自定义上传多张图片(手动一次性上传多张图片)包含图片回显,删除
  • 在 Windows 上安装 PostgreSQL
  • 解决echarts在uniapp里tooltip,legend不能点击的问题
  • 项目实战--C#实现图书馆信息管理系统
  • WEB渗透信息收集篇--IP和端口信息
  • 【C语言】 约瑟夫环,循环链表实现
  • 一个定期自动更换特定账号的密码的脚本
  • Android、Java反编译工具JADX
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • angular组件开发
  • CSS盒模型深入
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • github指令
  • HTTP中GET与POST的区别 99%的错误认识
  • If…else
  • Javascript编码规范
  • java第三方包学习之lombok
  • java正则表式的使用
  • mockjs让前端开发独立于后端
  • ViewService——一种保证客户端与服务端同步的方法
  • 阿里云购买磁盘后挂载
  • 和 || 运算
  • 全栈开发——Linux
  • 通过npm或yarn自动生成vue组件
  • 微信开源mars源码分析1—上层samples分析
  • 移动端高清、多屏适配方案
  • ​Benvista PhotoZoom Pro 9.0.4新功能介绍
  • ​TypeScript都不会用,也敢说会前端?
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #13 yum、编译安装与sed命令的使用
  • #include到底该写在哪
  • $$$$GB2312-80区位编码表$$$$
  • (1)Hilt的基本概念和使用
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (3)STL算法之搜索
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (web自动化测试+python)1
  • (二)十分简易快速 自己训练样本 opencv级联lbp分类器 车牌识别
  • (二)原生js案例之数码时钟计时
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (七)c52学习之旅-中断
  • (十二)Flink Table API
  • (转)scrum常见工具列表
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .NET Core 项目指定SDK版本
  • .NET 设计一套高性能的弱事件机制