NodeJs - Utilisation de redis, connectez-redis avec express
NOTE
Pour ceux qui luttent avec le Redis, le Redis serveur doit être lancé. Sur windows, il existe un redis distribution, consultez le lien suivant: https://github.com/dmajkic/redis/downloads puis démarrez le serveur en lançant "redis-server.exe"
Je suis en train de suivre un tutoriel sur la node.js. Le tutoriel utilise Express et Redis.
J'ai installé et redis connectez-redis (ils sont référencés dans le paquet.json):
npm install redis connect-redis --save
Dans mon server.js (seule partie):
var express = require('express');
var http = require('http');
var app = module.exports = express();
var RedisStore = require('connect-redis')(express);
var redis = require("redis").createClient();
app.configure(function(){
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
console.log('views', __dirname + '/views');
app.set('view engine', 'jade'); //jade as template engine
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser());
app.use(express.session({
secret: "kqsdjfmlksdhfhzirzeoibrzecrbzuzefcuercazeafxzeokwdfzeijfxcerig",
store: new RedisStore({ host: 'localhost', port: 3000, client: redis })
}));
app.use(app.router);
app.use(express.static(__dirname + '/public'));
});
Le message d'erreur:
Express server listening on port 3000
[ERROR] Error
Error: Redis connection to 127.0.0.1:6379 failed - connect ECONNREFUSED
at RedisClient.on_error (D:\Programming\Screencasts\peepcode\nodejs\peepcode
-069-full-stack-nodejs-i-mov\code\roland\HotPie\node_modules\redis\index.js:140:
24)
at Socket.<anonymous> (D:\Programming\Screencasts\peepcode\nodejs\peepcode-0
69-full-stack-nodejs-i-mov\code\roland\HotPie\node_modules\redis\index.js:74:14)
at Socket.EventEmitter.emit (events.js:88:17)
at Socket._destroy.self.errorEmitted (net.js:329:14)
at process.startup.processNextTick.process._tickCallback (node.js:244:9)
[ERROR] Error
Error: Redis connection to 127.0.0.1:6379 failed - connect ECONNREFUSED
at RedisClient.on_error (D:\Programming\Screencasts\peepcode\nodejs\peepcode
-069-full-stack-nodejs-i-mov\code\roland\HotPie\node_modules\redis\index.js:140:
24)
at Socket.<anonymous> (D:\Programming\Screencasts\peepcode\nodejs\peepcode-0
Express démarre l'écoute sur le port 3000, c'est ce que j'attends. Le redis mentions message d'erreur de connexion sur le port 6379. Ce qui se passe si je passe les redisClient à RedisStore, qui est ce que j'ai compris à faire pour lier et redis RedisStore.
Je suis du développement sur Windows
J'ai exécuté simple.js comme recommandé par l'auteur (nœud simple.js) et les erreurs ont été jetés:Erreur: le Redis connexion à l'adresse 127.0.0.1:6379 l'échec connecter ECONNREFUSED Erreur: Redis connexion à l'adresse 127.0.0.1:6379 l'échec connecter ECONNREFUSED
Comment puis-je commencer redis? Je ne m'attendais pas à faire des trucs supplémentaires après l'installation.
redis.io/download ...
Run Redis with: $ src/redis-server
OriginalL'auteur roland | 2012-08-20
Vous devez vous connecter pour publier un commentaire.
Il semble que vous n'avez pas le redis serveur en cours d'exécution. Vous avez une bonne explication sur redis.io/télécharger sur comment télécharger, installer et l'exécuter à la fois serveur et client.
OriginalL'auteur Mr. Goferito
Le code est bien, mal configuré. Tout ce qui doit être changé, c'est le numéro de port.
Par exemple quand on va configurer la connexion à un redis stockage est dire l'application où le Redis serveur se trouve et à quel port il est à l'écoute sur. On pourrait également supprimer le port de la directive, tous ensemble, et connectez-redis va utiliser le port par défaut de la télécommande redis serveur.
Dans ce cas, je suggère d'essayer ce petit bout de code:
Changement:
Nouveau:
Mise à JOUR:
J'ai oublier d'indiquer que les commandes
netstat
,ping
, ettelnet
peut nous aider à déboguer les ports qui sont ouverts localement et que le service est de retour à la demande. Ces deux commandes seront exécutés dans cmd.exe/powershell et en vertu de bash si votre dans un environnement unix, comme Linux, OSX, ou BSD.Un exemple de ceci serait exectuting suivantes:
Windows:
Linux:
Ce que cela fait, c'est les rapports de la localement des ports ouverts pour localhost:3000 ou localhost:6379. Si votre travail avec un système distant ensuite, vous utilisez la commande ping pour voir si le serveur est un portscanner comme nmap pour découvrir la distance de ports disponibles.
Suite à tout cela, vous serait alors l'initiative de la connexion à l'aide de:
Rappelez-vous, juste parce que l'on est de la programmation dans un langage du web qui ne signifie pas qu'on n'est pas d'apprendre la technique extrémités de la mise en réseau.
OriginalL'auteur Dwight Spencer
En plus de ce qui est mentionné, je tiens à ajouter
express.session{..}
jette d'erreur suivant que la session est de core maintenant.Solution:
ajouter
var session = require('express-session');
Et l'utilisation de la plaine
session
au lieu deexpress.session
OriginalL'auteur zion inc