провел день, изучая это. Вот варианты, которые я обнаружил. Запросы в секунду выполняются через ab -n 100000 -c 1 http://127.0.0.1:9778/
на моей локальной машине.
- нет сеансов - быстро (438 запросов / сек)
- cookieSession : не требует внешнего сервиса, незначительное влияние на скорость (311 req / sec) - самое быстрое, сеансы истекают с cookie (настраивается
maxAge
)
- connect-redis : требуется сервер redis, большое влияние на скорость (4 req / sec с redis2go и redisgreen) - быстрее, чем mongo, через некоторое время сеансы будут удалены (настраивается
ttl
)
- connect-mongo - требуется сервер mongodb, большое влияние на скорость (2 требования / сек с mongohq) - медленнее, чем redis, для настройки сеансов очистки вручную требуется
clear_interval
Вот код, который я использовал для cookieSession:
server.use express.cookieSession({
secret: appConfig.site.salt
cookie: maxAge: 1000*60*60
})
Вот код, который я использую для redis:
RedisSessionStore ?= require('connect-redis')(express)
redisSessionStore ?= new RedisSessionStore(
host: appConfig.databaseRedis.host
port: appConfig.databaseRedis.port
db: appConfig.databaseRedis.username
pass: appConfig.databaseRedis.password
no_ready_check: true
ttl: 60*60 # hour
)
server.use express.session({
secret: appConfig.site.salt
cookie: maxAge: 1000*60*60
store: redisSessionStore
})
Вот мой кофейный текст для монго:
server.use express.session({
secret: appConfig.site.salt
cookie:
maxAge: 100*60*60
store: new MongoSessionStore({
db: appConfig.database.name
host: appConfig.database.host
port: appConfig.database.port
username: appConfig.database.username
password: appConfig.database.password
auto_reconnect: appConfig.database.serverOptions.auto_reconnect
clear_interval: 60*60 # hour
})
})
Теперь, конечно, удаленные базы данных redis и mongo будут медленнее, чем их локальные эквиваленты. Я просто не мог заставить работать локальные эквиваленты, особенно учитывая, что время установки и обслуживания для меня было намного больше, чем я хотел инвестировать по сравнению с удаленными альтернативами, размещенными на хосте, что-то, что я считаю верным и для других, поэтому, почему эти размещенные службы удаленной базы данных существуют в первую очередь!
Относительно тестов локальной базы данных см. @ ответ Мустафы .
Рад, что кто-то отредактировал этот ответ , чтобы добавить свои тесты локальной базы данных в смесь.