sql >> Database >  >> NoSQL >> Redis

tel het aantal sessies in connect-redis

Ja, connect-redis gebruikt intern redis.createClient() als je het alleen de referenties geeft zoals je hierboven hebt. U kunt het ook rechtstreeks aan een klant doorgeven.

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

Om het aantal sessies te krijgen, wilt u redis opvragen voor de set sleutels die overeenkomt met dat sleutelvoorvoegsel. Voor connect-redis is dit "sess:".

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

Zoals ze in de redis-documentatie aangeven, neemt het commando toetsen lineaire tijd in beslag, dus in grote systemen is het geen goed idee om dit vaak op te vragen. U kunt beter een aparte teller houden die u verhoogt wanneer een gebruiker zich aanmeldt en verlaagt wanneer een gebruiker zich afmeldt.




  1. Is er een manier om een ​​cluster door te spoelen, zodat alle sleutels van master en slaves uit de db worden verwijderd?

  2. Kunnen redis-sleutelruimtemeldingen naar de redis-stream worden gepusht in plaats van pub/sub-kanaal?

  3. MongoDB opzoeken wanneer vreemd veld een array van objecten is

  4. Datum-gegevenstype importeren met mongoimport