我想在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 ECONNREFUSED,deploying redis to heroku unable to connect,How 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,但它不起作用。
请告诉我我需要做的任何事情。 谢谢你的帮助。
答案 0 :(得分:9)
检查哪个 ENV 变量应包含redis配置
例如,如果您要将Redis用于Sidekiq,则需要将 ENV [" REDISTOGO_URL"] 映射到 ENV [" REDIS_PROVIDER" ] 强> 因为Sidekiq期望从 ENV获得redis配置[" REDIS_PROVIDER"]
你可以这样做
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
答案 1 :(得分:4)
您正在尝试连接到自己的计算机(请注意127.0.0.1 == localhost)。我猜这不是你正在寻找的Redis服务器:)
看起来ENV["REDISTOGO_URL"]
未正确设置。
另外,只是旁注,如果您还没有,请查看Redis To Go,这是大多数人与Heroku一起用作Redis服务器的内容。