设置redis ENVvariables – 在Openshift上的Node.js

我从Heroku迁移到Openshift,因为我的应用程序大量使用socket.io。 我似乎已经正确地连接了redis,但只是想确认一下。

当我input这个:

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 

然后我设置ENVvariables如下所示:

 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进行会话pipe理)。

我只是想确保我做对了。 我设置了正确的variables而不会改变吗? 还是有办法dynamic设置它们?

对我来说,这看起来不错。 你正在使用rhc set-env正确设置环境variables,既然你使用的是主机名而不是IP,它不应该改变。