Redis
 sql >> Base de données >  >> NoSQL >> Redis

compter le nombre de sessions dans connect-redis

Oui, connect-redis utilise redis.createClient() en interne si vous ne lui fournissez que des informations d'identification comme ci-dessus. Vous pouvez également le transmettre directement à un client.

var redisClient = redis.createClient(6379, "127.0.0.1", { auth_pass: "RedisPASS" });
redisClient.select(2);

app.use(express.session({
    store: new RedisStore({
         client: redisClient
    }),
    secret: '1234567890QWERTY'
}));

Pour obtenir le nombre de sessions, vous souhaiterez interroger redis pour l'ensemble de clés correspondant à ce préfixe de clé. Pour connect-redis, il s'agit de "sess :".

redisClient.keys("sess:*", function(error, keys){
    console.log("Number of active sessions: ", keys.length);
});

Comme ils l'indiquent dans la documentation Redis, la commande keys prend un temps linéaire, donc dans les grands systèmes, ce n'est pas une bonne idée de l'interroger fréquemment. Vous feriez mieux de conserver un compteur séparé que vous incrémentez lorsqu'un utilisateur se connecte et que vous décrémentez lorsqu'un utilisateur se déconnecte.