在Heroku上的NodeJS中创建两个Redis To Go客户端时出错

时间:2015-04-01 05:19:14

标签: node.js heroku redis redistogo

我在使用NodeJS构建的Heroku应用程序上运行了一个web dyno,并且它在Nano(免费)层上使用了一个Redis To Go数据库。该层应该支持多达十个连接,但如果我尝试使用以下两个不同的模块连接它:

var redis_url = require('url').parse(process.env.REDISTOGO_URL);
var redis = require('redis').createClient(redis_url.port, redis_url.hostname);

尝试启动应用时出现此错误:

  

错误:就绪检查失败:NOAUTH需要验证。 3月31日   21:52:18<> app / web.1:在RedisClient.on_info_cmd   (/app/node_modules/redis/index.js:380:35)

REDISTOGO_URL环境变量设置正确,如果我从其中一个模块中删除代码,那么它会正常启动而没有错误。我可以创建一个客户端并将其传递给每个模块,但我真的更愿意理解这里导致问题的原因。

有人可以解释发生了什么吗?

1 个答案:

答案 0 :(得分:2)

我无法重现您描述的确切问题,但我能够通过执行以下操作解决身份验证问题

var redis_url = require('url').parse(process.env.REDISTOGO_URL)
var redisClient1 = require('redis').createClient(redis_url.port, redis_url.hostname, {auth_pass: redis_url.auth.split(":")[1]});
redisClient1.on("ready", function(){
  console.log("one ready")
})

var redisClient2 = require('redis').createClient(redis_url.port, redis_url.hostname, {auth_pass: redis_url.auth.split(":")[1]});
redisClient2.on("ready", function(){
  console.log("two ready")
})

以上是否适用于您?