【发布时间】:2021-07-22 03:39:21
【问题描述】:
我无法使用 TLS 连接到 Heroku Redis。我尝试了heroku docs 中给出的内容以及此帖子How to Connect Heroku Redis TLS Node? 上的答案,但似乎没有任何效果。我当前的 redis 选项如下所示:
const Redis = require('ioredis');
const url = process.env.REDIS_URL;
const options = {
tls: {
rejectUnauthorized: false,
},
};
const opts = new Redis(url, options);
我得到的错误是
[ioredis] Unhandled error event:Error: connect ETIMEDOUT
at TLSSocket.<anonymous
(/app/node_modules/ioredis/built/redis/index.js:310:37)
at Object.onceWrapper (events.js:421:28)
at TLSSocket.emit (events.js:315:20)
.....
REDIS_URL 和 REDIS_TLS_URL 还有什么区别?用哪一个?
【问题讨论】:
-
您遇到了什么错误,具体定义了“似乎没有任何效果”?这个错误会省去很多猜测。
-
@syntaqx 我添加了错误,感谢您的评论。
-
部署应用程序时,
REDIS_URL是否在应用程序配置中正确设置?通过运行:heroku config | grep REDIS并检查插件的附件,确保您的应用程序配置中设置的值正确设置。在这里不是想成为一个混蛋,我只知道您发布的代码应该可以正常工作,所以这是不太正确的其他事情。 -
是的,它设置正确。当我运行
heroku config | grep REDIS时,我看到REDIS_TLS_URL和REDIS_URL都打印出来了,这与在heroku 上的配置变量中设置的相同。 -
好酷 - 最后,您会确保您使用的是最新版本的
ioredis吗? 2019 年解决了一个大的ETIMEDOUTissue,但我知道一些 heroku 演示不会经常更新它们的依赖关系。
标签: node.js heroku redis ioredis