【问题标题】:Using redis with heroku将 redis 与 heroku 一起使用
【发布时间】:2015-08-17 20:41:04
【问题描述】:

这是我第一次使用redis,唯一的原因是因为我正在尝试autocomplete search tutorial。该教程在开发中完美运行,但我在为 heroku 设置 redis 时遇到了麻烦。

我已经在 heroku 文档上关注 these steps 来设置 redis,但是当我运行 heroku run rake db:seed 时,我得到了 Redis::CannotConnectError: Error connecting to Redis on 127.0.0.1:6379 (Errno::ECONNREFUSED)

我对 heroku 不是很熟悉,所以如果你们需要更多信息,请告诉我。

编辑

我已经完成了here 所示的初始化步骤,当我运行heroku config:get REDISCLOUD_URL 时,结果与我的 Heroku 设置的 config vars 部分下的 Redis Cloud URL 完全相同。

按照文档,然后我像这样设置 config/initializers/redis.rb:

if ENV["REDISCLOUD_URL"]
    $redis = Redis.new(:url => ENV["REDISCLOUD_URL"])
end

为了检查,我尝试在 if 块中用实际 URL 替换 redis 云,而不仅仅是 REDISCLOUD_URL 变量,但这没有用。当我尝试为 heroku 数据库播种时,我的错误消息没有改变。

【问题讨论】:

    标签: heroku redis


    【解决方案1】:

    仅仅创建一个$redis变量指向已安装的Redis服务器是不够的,你还需要告诉Soulmate,否则它会默认为localhost。

    Soulmate README 开始,您应该能够在初始化程序中执行类似的操作(而不是当前的 redis.rb 初始化程序,除非您在应用程序的其他地方使用 Redis,否则您不需要):

    if ENV["REDISCLOUD_URL"]
      Soulmate.redis = ENV["REDISCLOUD_URL"]
    end
    

    查看Soulmate source,一种更简单的方法可能是将REDIS_URL 环境变量设置为Redis url,而不是REDISCLOUD_URL,因为看起来Soulmate 在回退到本地主机。

    【讨论】:

    • 我使用了你建议的灵魂伴侣初始化程序,而不是 redis 初始化程序,它似乎很有魅力。无论如何,我已经成功地播种了我的 heroku 数据库。非常感谢,这让我头疼!只要允许,我就会奖励赏金。
    • @SoSimple 很高兴您找到了解决方案!这表明您的应用程序正在使用的 Redis gem 不支持使用该语法创建连接 - 您在使用什么?
    • @ItamarHaber 正如马特所说,问题是我忘记了灵魂伴侣,需要告诉它查看云而不是本地主机。我刚刚用 soulmate.rb 替换了 config/initializers/redis.rb,一切似乎都运行良好 :)
    【解决方案2】:

    您的代码正在尝试连接到本地 Redis 实例,而不是来自 Redis Cloud 的实例 - 请确保您已完成详细说明的初始化步骤以解决此问题。

    【讨论】:

    • 很抱歉没有尽快回复,我的电脑出现了一些问题。我已经完成了设置 redis 云的这些步骤,但它仍在尝试连接到本地版本。有什么想法吗?
    • 请在您的问题中添加相关的初始化代码:)
    猜你喜欢
    • 2016-07-28
    • 2016-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-08
    • 1970-01-01
    相关资源
    最近更新 更多