Vérifier si redis est en cours d'exécution -> node js

Je voulais juste savoir, au début de mon NodeJS, si Redis est démarré ou pas (de sorte que les utilisateurs de la session seront stockés ou non).

Voici ce que j'ai pour le moment :

var session = require('express-session');
var RedisStore = require('connect-redis')(session);
var redis = require("redis");
var client = redis.createClient(global.redis.host, global.redis.port);

//Check if redis is running
var redisIsReady = false;
client.on('error', function(err) {
    redisIsReady = false;
    console.log('redis is not running');
    console.log(err);
});
client.on('ready', function() {
    redisIsReady = true;
    console.log('redis is running');
});

//Here I use express-session, but I want to set a store only if redis is ready
    sessOptions = {
        [...]
    }
    //Store setting
    if (redisIsReady) {
        sessOptions.store = new RedisStore({
            host: global.redis.host,
            port: global.redis.port
        });
    } else {
        console.log("redis is not running - sessions won't be written to disk");
    }
//app.use(session(sessOptions))

Ici est ce qu'il est de sortie dans les deux cas (lorsque le Redis est en cours d'exécution ou non) :

redis is not running - sessions won't be written to disk
redis is not running
Error: Redis connection to 6379:localhost failed - connect ENOENT

J'ai donc 2 questions :

  1. Comment puis-je faire pour vérifier si redis est en cours d'exécution avant de mettre mon SessionStore (est-il de toute façon à vérifier de manière synchrone si redis est en cours d'exécution) ?
  2. Pourquoi il me donne une erreur, même quand redis est en cours d'exécution ?

MERCI!


Note : je suis en utilisant par défaut de l'hôte/port (localhost, 6379) et le RedisStore fonctionne comme prévu.

Note 2 : je suis sous Windows... mais n'ayez pas peur, il devrait avoir le même comportement!

Mise à jour : Question #2 réponses, par vmx => Merci!

Mise à jour 2 : Question n ° 1 a répondu par Nathan => Merci!

Avez-vous vraiment démarrer le serveur (type redis-server &) ?
Oui, mon RedisStore se comporte comme prévu, Redis enregistrer les sessions de l'utilisateur avec succès. Je peux récupérer ma session à l'aide de la redis_client terminal. J'ai juste ne peut pas se connecter à redis à l'aide de createClient()
node_redis comportement par défaut est de la file d'attente des commandes à partir du moment où vous appelez redis.createClient jusqu'à ce que la connexion est établie, il est donc bien possible, vous pouvez il vous suffit d'instancier un RedisStore et de poursuivre vos activités sans avoir à vérifier si redis est prêt. Lui donner un essai.

OriginalL'auteur Oliboy50 | 2014-06-15