Redis Échec sur Cloudfoundry avec Nodejs
-
11-12-2019 - |
Question
Je fais une application qui utilise Redis.Cela fonctionne parfaitement sur mon ordinateur exécutant Ubuntu 12.04, mais sur le cloudfoundry, cela me donne une erreur.
Voici le code de l'application:
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);
sur Cloudfoundry, quand j'exécute cette application, cela me donne cette sortie:
Clé de réglage 1
Obtenir la clé1
Erreur: Erreur: Échec de la vérification prête: ERR Fonctionnement non autorisé
Je peux confirmer que sa connexion au service REDIS à l'aide du port et du nom d'hôte spécifié par Cloudfoundry.
Alors je pense que son échec à cause de l'une de ces commandes.: (
Quelqu'un peut-il me dire, pourquoi cette erreur se produit-elle?
merci.: D
La solution
Vous devez également vous authentifier à Redis.Essayez ceci:
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);