设置redis ENV变量 - Openshift上的Node.js

时间:2014-08-21 23:39:30

标签: node.js redis openshift openshift-client-tools

我正在从Heroku迁移到Openshift,因为我的应用程序使用了socket.io。我似乎正确地连接了redis,但只想确定。

当我输入时:

 rhc cartridge-status redis -a myapp

我明白了:

Using smarterclayton-redis-2.6 (Redis) for 'redis'

RESULT:

Redis is running
  master (receives writes), mode sharded
  Connect to: xxhostnumberxx-myapp.rhcloud.com:xxportnumberxx password:xxsomepasswordxx
然后我按如下设置ENV变量:

rhc set-env OPENSHIFT_REDIS_HOST=xxhostnumberxx-myapp.rhcloud.com -a myapp
rhc set-env OPENSHIFT_REDIS_PORT=com:xxportnumberxx -a myapp
rhc set-env REDIS_PASSWORD=password:xxsomepasswordxx -a myapp

然后在我的app.js中我有:

var redis;

// Openshift redis connection
if (process.env.OPENSHIFT_REDIS_HOST) {

    var redisHost = process.env.OPENSHIFT_REDIS_HOST;
    var redisPort = process.env.OPENSHIFT_REDIS_PORT;
    var redisPass = process.env.REDIS_PASSWORD;

    redis = require('redis').createClient(redisPort, redisHost);
    redis.auth(redisPass);
} 
// Localhost
else {
    redis = require('redis').createClient();
}

似乎工作正常,因为req.session is undefined错误消失了(我正在使用redis进行会话管理)。

我只是想确保我做得对。我设置的变量是否正确且不会改变?或者有没有办法动态设置它们?

1 个答案:

答案 0 :(得分:1)

对我来说这看起来不错。您已使用rhc set-env正确设置环境变量,并且由于您使用的是主机名而不是IP,因此不应更改。