好吧好吧,这个报错即常见也不常见,算是一个低级问题。
前情提要
今天我有一个需求,需要给线上正式环境数据进行一次重传,而且需要微调一下数据。
所以,我决定,在本地运行程序,链接线上正式环境数据库和redis,去获取一些数据。
接下来,问题来了,正式redis配置放到本地环境后,redis无法链接了。
说明
- 环境:node+ioredis
- 现象:redis连接错误,报错Error: getaddrinfo ENOTFOUND {host}
- 分析:根据报错信息可知,当前redis连接地址不存在;
- 问题:这个redis地址是从正式环境配置拷贝过来的,可以确定的是连接地址是有效的,但是现在在本地就是连接不上去;
- 图片
报错信息:
Redis: Fail
Error: getaddrinfo ENOTFOUND
解决方案:
- 1.查看自己的连接地址有没有少拷贝字符;
- 2.查一下这个链接地址是不是公网地址,我出现这个问题,是因为,地址是内网地址。如果是内网地址,需要自己修改为公网地址,即可使用!
思考
其实,这个问题不是很难。单看报错提示就可以明白,肯定是redis配置有问题,但是问题在哪里是需要确定的。
由下图可知,配置参数没几个,所以问题很容易定位。
- 首先,先对比这几个参数,看是否拷贝错误了。
- 是否没有挂vpn(公司有局域网测试环境),由于redis链接地址是正式环境的,是阿里云的,所以,这个直接pass;
- 最后查看这个redis链接地址是不是公网地址,这里有一个很傻的技巧,阿里云的redis,如果你拿到的公网地址,没有人会不设置密码吧。所以,大胆的看一下开发提交记录,问一下开发者吧。
复道寄语
还不写注释吗?把孩子逼成啥样了!