connect-redis is a Redis session store backed by node_redis, and is insanely fast :). Requires redis >= 2.0.0
for the SETEX command.
npm install connect-redis express-session
Pass the express-session
store into connect-redis
to create a RedisStore
constructor.
var session = require('express-session');
var RedisStore = require('connect-redis')(session);
app.use(session({
store: new RedisStore(options),
secret: 'keyboard cat'
}));
A Redis client is required. An existing client can be passed directly using the client
param or created for you using the host
, port
, or socket
params. - client
An existing client - host
Redis server hostname - port
Redis server portno - socket
Redis server unix_socket - url
Redis server url
The following additional params may be included:
-
ttl
Redis session TTL (expiration) in seconds -
disableTTL
Disables setting TTL, keys will stay in redis until evicted by other means (overidesttl
) -
db
Database index to use -
pass
Password for Redis authentication -
prefix
Key prefix defaulting to "sess:" -
unref
Settrue
to unref the Redis client. Warning: this is an experimental feature. -
serializer
An object containingstringify
andparse
methods compatible with Javascript'sJSON
to override the serializer used -
logErrors
Whether or not to log client errors. (default:false
)- If
true
, a default logging function (console.error
) is provided. - If a function, it is called anytime an error occurs (useful for custom logging)
- If
false
, no logging occurs.
- If
Any options not included in this list will be passed to the redis createClient()
method directly.
Clients other than node_redis
will work if they support the same interface. Just pass the client instance as the client
configuration option. Known supported clients include:
- ioredis - adds support for Redis Sentinel and Cluster
By default, the node_redis
client will auto-reconnect when a connection is lost. But requests may come in during that time. In express, one way this scenario can be handled is including a "session check" after setting up a session (checking for the existence of req.session
):
app.use(session( /* setup session here */ ))
app.use(function (req, res, next) {
if (!req.session) {
return next(new Error('oh no')) // handle error
}
next() // otherwise continue
})
If you want to retry, here is another option.
MIT