远程Redis服务器 JedisConnectionException: Failed connecting to host localhost:6379 解决方案
问题
最近接手了一个旧的项目,在服务器上成功运行后想把部分服务在本地启动进行调试,启动过程中出现了一个错误
2021-06-05 17:51:53.776 WARN org.springframework.boot.actuate.redis.RedisHealthIndicator [AbstractHealthIndicator.java:87] ## Redis health check failed
org.springframework.data.redis.RedisConnectionFailureException: Cannot get Jedis connection; nested exception is redis.clients.jedis.exceptions.
JedisConnectionException: Failed connecting to host localhost:6379at org.springframework.data.redis.connection.jedis.JedisConnectionFactory.fetchJedisConnector(JedisConnectionFactory.java:281)at org.springframework.data.redis.connection.jedis.JedisConnectionFactory.getConnection(JedisConnectionFactory.java:464)
错误信息的主要内容就是Failed connecting to host localhost:6379
关于这个错误网上有一些内容,基本都是在本地部署的redis,解决方案通常是
- 打开redis服务
- 关闭redis保护模式
但是在我遇到的场景中,把nacos中所有和redis相关的配置全都指定成服务器的ip地址后,仍然出现了localhost,说明是一个配置的错误,没有把redis服务器的值设置成服务器的ip。
解决方案
最终的解决方法
配置中加入spring.redis.host=服务器ip
就可以解决这个问题了。
因为这是一个旧的项目,里面配置项很多,刚开始重新部署的时候只把配置中有的ip全局替换了,没有考虑到原来程序运行的时候一直没有配置redis的ip地址,而是一直使用的缺省值,在项目本地调试的时候就遇到了问题。
排查过程
错误日志中已经写到了
JedisConnectionFactory.fetchJedisConnector(JedisConnectionFactory.java:281)
这行代码出现了问题
先打开JedisConnectionFactory
看看代码。
这段代码先创建了Jedis对象,再调用connect方法,可以在connect方法上打个断点。
这里很明显,还没有调用connect方法,在创建Jedis对象后host的值已经是localhost了。点进去看看createJedis
方法。
这里很明显调用了一个getHostName
方法,这个方法返回的应该是localhost,点进去继续看。
这个方法从standaloneConfig
对象中取出了hostname的值,而standaloneConfig
是JedisConnectionFactory
的一个对象,在这个对象上打个断点看看这个对象是通过哪个方法进来的。
进入断点后发现是在构造函数中传入了standaloneConfig
对象覆盖了默认值,再向上一层,进入了JedisConnectionConfiguration
类中,是这个类调用了JedisConnectionFactory
的构造方法。
调用的时候直接通过getStandaloneConfig
方法取到对象,继续进入。
发现是在properties
对象中取到了host的值
properties
是在RedisConnectionConfiguration
的构造函数中传入的。
点进RedisProerties
类中看一下
发现整个过程中host的源头就是spring.redis.host
这个配置的值,因为原来拿到的nacos配置文件中没有,加上对redis不太熟悉,就一直没有想到这个问题。不过通过一层一层分析还是找到了原因。
远程Redis服务器 JedisConnectionException: Failed connecting to host localhost:6379 解决方案相关推荐
- Java中使用Jedis连接Redis服务端时提示:JedisConnectionException: Failed connecting
场景 Centos中Redis的下载编译与安装(超详细): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103967334 Re ...
- 查看远程Redis服务器的版本
查看远程Redis服务器的版本 如何查看远程Redis服务器的版本 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 如果无远程Redis服务器的SSH访问 ...
- 连接远程Redis服务器超时
连接远程Redis服务器超时 问题 在本地java应用中,连接服务器的Redis失败,提示连接超时.远程服务器上可以登陆,也已经开放相应的端口,但提示连接超时. 解决 1.找到Redis服务启动时的配 ...
- 命令链接远程redis服务器
一.命令行切换到redis-cli.exe目录 二.输入命令:redis-cli.exe -h 服务器ip -p 端口 redis-cli.exe -h 192.168.1.1 -p 6379 三.输 ...
- Redis服务器启动之后3个警告信息的解决方案
今天是年前最后一篇文章了,不想写太多的东西,就写一些有关Redis相关问题的解决方案.当我们启动了Redis服务器之后,会看到3个警告,如果没看到,那是很好的,但是我看到了.看到了就不能不管,所以就好 ...
- 【redis】无法链接远程redis服务器,解决办法集合
✨编写不易,还希望各位大佬支持一下\textcolor{gray}{编写不易,还希望各位大佬支持一下}编写不易,还希望各位大佬支持一下
- 怎么远程访问redis服务器,redis服务器开启远程连接的步骤
redis服务器开启远程连接的步骤 发布时间:2020-04-09 10:45:05 来源:亿速云 阅读:103 作者:小新 今天小编给大家分享的是redis开启远程连接的步骤,很多人都不太了解,今天 ...
- Jenkins自动化构建vue项目然后发布到远程Linux服务器
部署Jenkins参照另一篇博客: centos7安装Jenkins及其卸载 一.jenkins相关插件的安装 1.安装Publish Over SSH插件用于SSH连接远程的服务器. 登录 jenk ...
- 10.Wordpress启用远程redis
Wordpress启用远程redis 测试系统:CentOS8.5 @redis-server(192.168.99.131) [root@localhost ~]# mount /dev/cdrom ...
- redis desktop manager 连接外网redis服务器
redis desktop manager 连接外网redis服务器 connection name(自己定义)host(内网地址) prot(6379) ssh tunnel remote host ...
最新文章
- 一文掌握明年物联网传感器市场!2022中国AIoT产业全景图谱报告新鲜出炉
- 嵌入式中的 *(volatile unsigned int *)0x500 解释
- Web实时通信,SignalR真香,不用愁了
- 商业项目中代码质量是否重要?
- 0821Servlet基础
- android各种组件的监听器
- 报表工具Style Report报表打印功能
- vijos 1602
- wvs_patcher批量测试网站
- cdr2022辅助注册机序列号
- 1342764-64-0,Lipoamido-PEG3-alcohol具有lipoamide和羟基端基
- 视觉伺服入门第二步:带你从经典论文阅读Visual Servo Control Part II: Advanced Approaches进阶版
- Xposed插件开发环境配置
- 【脚本】如何恢复Win10图片查看器
- **Django介绍 和 MVT 模式 MVC 模式对比**
- 向DPMFoam或MPPICFoam求解器中添加源项
- WPF中的右键菜单ContextMenu
- SSL 3.0 安全漏洞修复方法
- Anaconda安装并配置
- HPE矛头直指思科 与Arista达成软件定义合作关系及销售协议