Хотите использовать Redis на Heroku (Redis :: CannotConnectError (Ошибка подключения к Redis на 127.0.0.1:6379 (ECONNREFUSED)))

Я хочу использовать Redis на Heroku, но получаю эту ошибку Redis::CannotConnectError (Error connecting to Redis on 127.0.0.1:6379 (ECONNREFUSED)).

Я проверил их, но мне не помогли. Подключение Redis к 127.0.0.1:6379 не удалось - подключите ECONNREFUSED, развертывание redis на heroku, неспособном подключиться, Как заставить Redis запускаться на Heroku?.

Я использую Ruby 2.0.0p247 и Rails4. Я использую пуму.

Я использую RedisToGo (nano) и пишу это в /config/initializers/redis.rb.

uri = URI.parse(ENV["REDISTOGO_URL"] || "redis://localhost:6379/" )
$redis = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password)

Я проверил, что "REDISTOGO_URL" - это тот же URL, который я вижу, когда $ heroku config.

Я перезапустил Redis в Heroku GUI, но он не работает.

Пожалуйста, скажите мне все, что мне нужно сделать. Спасибо за помощь.


person Yuki Ishikawa    schedule 07.10.2013    source источник


Ответы (2)


Вы пытаетесь подключиться к своему собственному компьютеру (примечание 127.0.0.1 == localhost). Я предполагаю, что это не тот сервер Redis, который вы ищете :)

Похоже, ENV["REDISTOGO_URL"] настроен неправильно.


Кроме того, в качестве примечания, посмотрите Redis To Go, если вы еще этого не сделали, то есть то, что большинство людей используют в качестве сервера Redis вместе с Heroku.

person varatis    schedule 07.10.2013
comment
Спасибо, Варатис. Плохо было то, что я поместил URL-адрес (значение) redis в ENV [], а не в ключ. Вот почему Redis не работал. - person Yuki Ishikawa; 08.10.2013

Проверьте, какая переменная ENV должна содержать конфигурацию Redis.

Например, если вы собираетесь использовать Redis для Sidekiq, вам необходимо сопоставить ENV ["REDISTOGO_URL"] с ENV ["REDIS_PROVIDER"], потому что Sidekiq ожидает получить конфигурацию redis из ENV ["REDIS_PROVIDER"]

Вы можете сделать это так

heroku config:set REDIS_PROVIDER=REDISTOGO_URL

Также вам не нужно URI.parse, Redis сделает это вместо вас, если это необходимо.

$redis = Redis.new(url: ENV['REDISTOGO_URL' || "redis://localhost:6379/"])

Я предлагаю использовать гем figaro для установки переменных ENV для вашей локальной разработки. Таким образом вы удаляете оператор ИЛИ

$redis = Redis.new(url: ENV['REDISTOGO_URL'])

и установите альтернативное значение в своем config / application.yml

REDISTOGO_URL: redis://127.0.0.1:6379 
person Serge Seletskyy    schedule 19.11.2014