ruby-on-rails - 想在 Heroku 上使用 Redis (Redis::CannotConnectError ( Error connecting to Redis on 127.0.0.1:6379 (ECONNREFUSED)) )

标签 ruby-on-rails heroku redis ruby-on-rails-4 puma

我想在 Heroku 上使用 Redis,但出现此错误 Redis::CannotConnectError(在 127.0.0.1:6379 (ECONNREFUSED) 上连接到 Redis 时出错)

我检查了这些,但没有得到帮助。 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 时看到的 URL 相同。

我在 Heroku GUI 上重新启动了 Redis,但它不起作用。

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

最佳答案

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

例如,如果您要为 Sidekiq 使用 Redis,则需要将 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 

关于ruby-on-rails - 想在 Heroku 上使用 Redis (Redis::CannotConnectError ( Error connecting to Redis on 127.0.0.1:6379 (ECONNREFUSED)) ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19232756/

相关文章:

ruby-on-rails - 如何根据 Controller 名称查询模型

heroku - Heroku安装Bundler然后抛出错误Bundler 2.0.1

ruby-on-rails - 将现有的新遗物帐户连接到 heroku rails 应用程序以监控内存

redis - 如何使用正在运行的redis服务器读取更新的redis配置文件

node.js - 等待最后一个 stream.on ('data' ) 事件中异步函数的回调

ruby-on-rails - 将 ruby​​ on rails 应用程序从 sqlite 转换为 postgresql

ruby-on-rails - 在生产模式下运行 rails app 不会在终端中显示生产服务器日志。并显示错误浏览器出现问题

ruby-on-rails - redis 实例是否只能用于 1 个项目?

ruby-on-rails - 在新的 Rails 项目中从 SQLite 更改为 PostgreSQL

Spring Boot - Redis 缓存连接池在几次请求后耗尽