2012-07-25 1 views
0

Je fais une application qui utilise Redis. Il fonctionne parfaitement sur mon ordinateur exécutant Ubuntu 12.04, mais sur CloudFoundry il me donne une erreur.Redis échec sur CloudFoundry avec NodeJS

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 je lance cette application, il me donne cette sortie:

Setting key 1

Getting key1

Error: Error: Ready check failed: ERR operation not permitted

Je peux confirmer que la connexion au service Redis en utilisant le port et le nom d'hôte spécifiés par CloudFoundry.

Donc je pense que son échec à cause d'une de ces commandes. :(

Quelqu'un peut-il me dire, pourquoi est cette erreur se produit

Merci:.. D

Répondre

3

Vous devez vous authentifier auprès Redis ainsi 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); 
+0

Hey Glenn, Cela fonctionne parfaitement: D –

+1

Cela aiderait les nouveaux arrivants, si vous pouviez faire un guide pour utiliser Redis sur CloudFoundry en utilisant NodeJS puisque vous n'avez actuellement qu'un guide utilisant Ruby: D –

+1

Content de vous aider! out http://blog.cloudfoundry.com la semaine prochaine (peut-être t il suit) pour quelques nouvelles sur l'auto-configuration des services dans les applications node.js! –

Questions connexes