簡體   English   中英

使用NodeJS在CloudFoundry上進行Redis失敗

[英]Redis failure on CloudFoundry with NodeJS

我正在制作一個使用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

取得key1

錯誤:錯誤:准備檢查失敗:不允許進行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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM