Redis
 sql >> Database >  >> NoSQL >> Redis

contare il numero di sessioni in connect-redis

Sì, connect-redis usa redis.createClient() internamente se gli fornisci solo credenziali come quelle sopra. Puoi anche passarlo direttamente come cliente.

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'
}));

Per ottenere il numero di sessioni, dovrai interrogare redis per il set di chiavi che corrispondono a quel prefisso di chiave. Per connect-redis questo è "sess:".

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

Come affermano nella documentazione di redis, il comando keys richiede un tempo lineare, quindi nei sistemi di grandi dimensioni non è una buona idea interrogarlo frequentemente. Faresti meglio a mantenere un contatore separato che incrementi quando un utente accede e decrementa quando un utente si disconnette.