Ошибка создания двух клиентов Redis To Go в NodeJS на Heroku
У меня есть одно веб-приложение, работающее в приложении Heroku, созданное с использованием NodeJS, и оно использует одну базу данных Redis To Go на уровне Nano (бесплатно). Предполагается, что этот уровень поддерживает до десяти соединений, но если я попытаюсь подключиться к нему в двух разных модулях, используя:
var redis_url = require('url').parse(process.env.REDISTOGO_URL);
var redis = require('redis').createClient(redis_url.port, redis_url.hostname);
Я получаю эту ошибку при попытке запустить приложение:
Ошибка: проверка готовности не удалась: NOAUTH Требуется аутентификация. 31 марта 21:52:18 <> app/web.1: at RedisClient.on_info_cmd (/app/node_modules/redis/index.js:380:35)
REDISTOGO_URL
Переменная окружения установлена правильно, и если я удаляю код из одного из модулей, он запускается нормально, без ошибок. Я мог бы создать одного клиента и передать его каждому модулю, но я бы предпочел понять, что на самом деле вызывает проблему здесь.
Может кто-нибудь объяснить, что происходит?
1 ответ
Я не смог воспроизвести точно описанную вами проблему, но я смог обойти проблему с аутентификацией, выполнив следующие действия.
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")
})
Вышесказанное работает для вас?