redis报错 Error getaddrinfo ENOTFOUND

645 阅读2分钟

好吧好吧,这个报错即常见也不常见,算是一个低级问题。

前情提要


今天我有一个需求,需要给线上正式环境数据进行一次重传,而且需要微调一下数据。 所以,我决定,在本地运行程序,链接线上正式环境数据库和redis,去获取一些数据。

接下来,问题来了,正式redis配置放到本地环境后,redis无法链接了。

说明


  • 环境:node+ioredis
  • 现象:redis连接错误,报错Error: getaddrinfo ENOTFOUND {host}
  • 分析:根据报错信息可知,当前redis连接地址不存在;
  • 问题:这个redis地址是从正式环境配置拷贝过来的,可以确定的是连接地址是有效的,但是现在在本地就是连接不上去;
  • 图片

报错信息:

Redis: Fail
Error: getaddrinfo ENOTFOUND 

image.png

解决方案:


  • 1.查看自己的连接地址有没有少拷贝字符;
  • 2.查一下这个链接地址是不是公网地址,我出现这个问题,是因为,地址是内网地址。如果是内网地址,需要自己修改为公网地址,即可使用!

思考


其实,这个问题不是很难。单看报错提示就可以明白,肯定是redis配置有问题,但是问题在哪里是需要确定的。

由下图可知,配置参数没几个,所以问题很容易定位。

  • 首先,先对比这几个参数,看是否拷贝错误了。
  • 是否没有挂vpn(公司有局域网测试环境),由于redis链接地址是正式环境的,是阿里云的,所以,这个直接pass;
  • 最后查看这个redis链接地址是不是公网地址,这里有一个很傻的技巧,阿里云的redis,如果你拿到的公网地址,没有人会不设置密码吧。所以,大胆的看一下开发提交记录,问一下开发者吧。

image.png

复道寄语

还不写注释吗?把孩子逼成啥样了!