我正在制作一个使用redis的应用程序。它在我运行ubuntu 12.04的计算机上运行得很好,但是在cloudfoundry上它给了我一个错误。
以下是应用程序的代码:
var
http = require("http"),
redis = require("redis"),
cf = require("cloudfoundry");
cf.cloud;
if (cf.redis["myredisservice"]) {
var rport = cf.redis["myredisservice"].credentials.port;
var rhost = cf.redis["myredisservice"].credentials.hostname;
} else {
var rport = 6379;
var rhost = "127.0.0.1";
}
http.createServer(function(req, res) {
var client = redis.createClient(rport, rhost);
res.writeHead(200, {"Content-Type": "text/html"});
client.on("error", function(error) {
res.write("Error: " + error);
});
res.write("Setting key 1<br>");
client.set("key1", "My 1st String!", redis.print);
res.write("Getting key1<br>");
client.get("key1", function(error, reply) {
res.write("Results for key1<br>");
res.write(reply);
client.end();
res.end();
});
}).listen(cf.port || 3000);
在cloudfoundry上,当我运行这个应用程序时,它会给我这个输出:
设置键1
获取密钥1
错误:错误:就绪检查失败:不允许err操作
我可以使用cloudfoundry指定的端口和主机名确认它连接到redis服务。
所以我认为它失败是因为其中一个命令。:(
有谁能告诉我,为什么会发生这种错误?
谢谢。D
最佳答案
你还需要向redis进行身份验证。试试这个:
var
http = require("http"),
redis = require("redis"),
cf = require("cloudfoundry");
cf.cloud;
if (cf.redis["myredisservice"]) {
var rport = cf.redis["myredisservice"].credentials.port;
var rhost = cf.redis["myredisservice"].credentials.hostname;
var rpass = cf.redis["myredisservice"].credentials.password;
} else {
var rport = 6379;
var rhost = "127.0.0.1";
}
http.createServer(function(req, res) {
var client = redis.createClient(rport, rhost);
client.auth(rpass);
res.writeHead(200, {"Content-Type": "text/html"});
client.on("error", function(error) {
res.write("Error: " + error);
});
res.write("Setting key 1<br>");
client.set("key1", "My 1st String!", redis.print);
res.write("Getting key1<br>");
client.get("key1", function(error, reply) {
res.write("Results for key1<br>");
res.write(reply);
client.end();
res.end();
});
}).listen(cf.port || 3000);
关于node.js - RedI在使用NodeJS的CloudFoundry上失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11658276/