首页 文章

想在Heroku上使用Redis(Redis :: CannotConnectError(在127.0.0.1:6379上连接到Redis时出错(ECONNREFUSED)))

提问于
浏览
6

我想在Heroku上使用Redis但是我收到了这个错误 Redis::CannotConnectError (Error connecting to Redis on 127.0.0.1:6379 (ECONNREFUSED)) .

我检查了这些,但没有得到帮助 . Redis connection to 127.0.0.1:6379 failed - connect ECONNREFUSEDdeploying redis to heroku unable to connectHow to get Redis to start on 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"是我在 $ heroku config 时可以看到的相同网址 .

我在Heroku GUI上重启Redis,但它不起作用 .

请告诉我我需要做的任何事情 . 谢谢您的帮助 .

2 回答

  • 9

    您正在尝试连接到自己的计算机(请注意127.0.0.1 == localhost) . 我猜这不是你正在寻找的Redis服务器:)

    看起来 ENV["REDISTOGO_URL"] 没有正确设置 .


    另外,只是旁注,如果您还没有查找Redis To Go,这是大多数人与Heroku一起用作Redis服务器的情况 .

  • 4

    检查哪个 ENV 变量应包含redis配置

    例如,如果您要将Redis用于Sidekiq,则需要将 ENV["REDISTOGO_URL"] 映射到 ENV["REDIS_PROVIDER"] ,因为Sidekiq期望从 ENV["REDIS_PROVIDER"] 获取redis配置

    你可以这样做

    heroku config:set REDIS_PROVIDER=REDISTOGO_URL
    

    此外,您不需要 URI.parse ,如果需要,Redis将代替您 .

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

    我建议使用gem figaro为本地开发设置ENV变量 . 因此,您删除 OR 语句

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

    并在 config/application.yml 中设置替代值

    REDISTOGO_URL: redis://127.0.0.1:6379
    

相关问题