一、问题描述
在springcloud中使用redis的时候,本地开发环境一切正常,没有什么特别的事情发生,可是上传到生产环境(个人开发,没有测试环境)的时候,死活连接不上redis,总是提示 finishConnect(..) failed: Connection refused: localhost/127.0.0.1:6379
,如下图所示:
检查了好多遍配置地址,就是不起作用,配置如下(为什么开发环境又可以使用,而到了服务器的docker镜像里面就不可以用了呢
):
spring:
application:
name: gateway-server
redis:
host: 192.168.1.7
port: 6379
# Redis服务器连接密码(默认为空),注释放到上面来,不然控制台可能会一直打印日志
password:
二、分析问题
修改端口号、修改host地址 等等统统都没有效果,以为是redis出问题了或者没有启动,于是在服务器使用redis-cli连接显示正常 、另一台电脑使用 redis-cli -h远程连接也显示正常,但是网站后台还是提示 finishConnect(..) failed: Connection refused: localhost/127.0.0.1:6379
搞了半天没办法了就开始一步步复盘,最后发现是redis地址配置错了:
上图的redis配置是错误的,把redis放在了application节点下面去了,所以一直读取不到redis配置属性。
三、解决问题
正确的配置应该是这样的:
spring:
application:
name: gateway-server
redis:
host: 192.168.1.7
port: 6379
# Redis服务器连接密码(默认为空),注释放到上面来,不然控制台可能会一直打印日志
password:
即:redis
属性的级别
和application
的级别是相等的
。而在本地能正常使用的原因就是读取不到redis配置的时候,就使用了默认的配置(即:host:localhost
);自己一个不小心挖了一个万年巨坑,差点把自己埋了。
修改了上面的属性以后,就可以正常使用了。