一、问题描述

          在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);自己一个不小心挖了一个万年巨坑,差点把自己埋了。
          修改了上面的属性以后,就可以正常使用了。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐