Puisque la réponse acceptée ne se connecte qu'aux hôtes distants, il est évident qu'elle sera toujours plus lente que localhost. Même s'il s'agit de l'ordinateur le plus proche de chez vous, il faudra des millisecondes pour lire sur cet ordinateur, alors que la mémoire locale ne prend que des nanosecondes. Vous devriez les comparer en utilisant des serveurs installés localement.
Voici mes résultats sur mon ordinateur local : Vous voyez, redis est presque aussi rapide que in-memory en cas de charge élevée. Vous pouvez cloner mon repo où ces codes de test sont disponibles : https://github.com/mustafaakin/express-session-store-benchmark
Concurrency: 1
none 4484.86 [#/sec]
memory 2144.15 [#/sec]
redis 1891.96 [#/sec]
mongo 710.85 [#/sec]
Concurrency: 10
none 5737.21 [#/sec]
memory 3336.45 [#/sec]
redis 3164.84 [#/sec]
mongo 1783.65 [#/sec]
Concurrency: 100
none 5500.41 [#/sec]
memory 3274.33 [#/sec]
redis 3269.49 [#/sec]
mongo 2416.72 [#/sec]
Concurrency: 500
none 5008.14 [#/sec]
memory 3137.93 [#/sec]
redis 3122.37 [#/sec]
mongo 2258.21 [#/sec]
Les pages utilisées lors de la session sont des pages très simples ;
app.get("/", function(req,res){
if ( req.session && req.session.no){
req.session.no = req.session.no + 1;
} else {
req.session.no = 1;
}
res.send("No: " + req.session.no);
});
Configuration du magasin Redis :
app.use(express.session({
store: new RedisStore({
host: 'localhost',
port: 6379,
db: 2,
}),
secret: 'hello'
}));
Configuration du magasin Mongo :
app.use(express.cookieParser());
app.use(express.session({
store: new MongoStore({
url: 'mongodb://localhost/test-session'
}),
secret: 'hello'
}));