通过Heroku中的Node连接到Redis数据库

时间:2014-02-16 08:37:24

标签: node.js heroku redis

关于Heroku:App是Nodejs,Express,WebSockets ...... 我正在一个小的免费Heroku实例上测试一个应用程序。 我通过OpenRedis和RedisToGo拥有自己的Redis数据库实例。 那些没有通过Heroku插件提供,但直接来自提供商。 我在本地运行时连接到它们很好。通过Heroku连接它们需要做些什么特别的事情? 我有点希望避免特殊的Heroku特定环境变量,但我很乐意在必要时使用它们。 但我绝对需要避免通过Heroku配置Redis插件的必要性 同样,我已经将我的数据库实例直接与相关提供商一起配置。

NODE_ENV=production npm start下本地工作正常,这表明我的应用程序应该连接到远程Redis实例(RedisToGo和/或OpenRedis)而不是本地Redis服务器。

我正在使用Redis至少做三件事:

  • 会话存储:: Connect-Redis ::这在本地工作正常(app服务器在本地运行但连接到远程Redis实例)并且似乎也可以在Heroku上工作 - 我已经通过刷新数据库进行检查然后将一个稍微新的版本推送到Heroku并刷新会话变量键。

  • Database :: Node-Redis ::这在本地工作也很好(也是在本地运行的app服务器,但连接到数据库的远程Redis实例),但似乎没有在Heroku上工作。

    < / LI>
  • WebSockets Transport Pub / Sub ::我没有彻底测试过。我猜它在起作用,但对于这个问题并不重要。

对我来说最有趣的是,

是Heroku实例能够通过Connect-Redis客户端连接到Redis实例,但无法通过数据库客户端连接到同一个Redis实例。而我本地运行的版本能够通过这两个客户端连接到同一个(远程)实例。 (我已通过终端客户端验证了这些发现,使用flushall命令并等待刷新密钥。)

非常感谢任何见解。

我将通过下面的评论发布我的编辑和更新,因为它们有时间戳。

1 个答案:

答案 0 :(得分:0)

事实证明,我们无法连接到数据库(不知道为什么因为我不知道Heroku在AWS上配置的内部因素)正常情况。通过Heroku的方式;我们需要使用heroku config:set命令设置环境变量。 OpenRedis提供了一个终端就绪字符串,可以为自我配置的RedisToGo实例添加类似的东西,但我还没有完成它。