Ioredis: how to cache express session in redis cluster

Created on 25 May 2017  路  6Comments  路  Source: luin/ioredis

usually often , we cache express session like :
var session = require('express-session');
var RedisStore = require('connect-redis')(session);

app.use(session({
store: new RedisStore(options),
secret: 'keyboard cat'
}));

now , after we use oiredis , i don't know how to cache express session in redis cluster
and i want to use session like under normal conditions :

req.session.user = 'hello world';

var user = req.session.user;

can u give an example ?

question

Most helpful comment

var session = require('express-session');
var RedisStore = require('connect-redis')(session);
var Redis = require('ioredis');
var redis = new Redis.Cluster([{
  host:'192.168.0.12',
  port:123
}]);
app.use(session({
    store: new RedisStore({ client: redis }),
    secret: 'keyboard cat'
}));

I didn't try but the code above should do the trick.

All 6 comments

There should not be any difference. Please refer to the documentation on connect-redis: https://github.com/tj/connect-redis#custom-redis-clients

`
var session = require('express-session');
var Redis = require('ioredis')(session);

var redis = new Redis.Cluster([{
host:'192.168.0.12',
port:123
}]);`

that is it ?

var session = require('express-session');
var RedisStore = require('connect-redis')(session);
var Redis = require('ioredis');
var redis = new Redis.Cluster([{
  host:'192.168.0.12',
  port:123
}]);
app.use(session({
    store: new RedisStore({ client: redis }),
    secret: 'keyboard cat'
}));

I didn't try but the code above should do the trick.

Do I need for the redis client to be connected before calling app.use(session..?

@tnguyen14 No, you don't

On logout, getting this error, Unhandled rejection ReplyError: CROSSSLOT Keys in request don't hash to the same slot. Everything else works. Tried doing Hashtag by making the prefix to be {sess}.

Was this page helpful?
0 / 5 - 0 ratings