官方demo是这样:
app.use(session({
store: new RedisStore(options),
secret: 'keyboard cat'
}));
其实应该要这样:
var sessionMiddleware;
var createMiddlware = _.throttle(function() {
var store = new RedisStore(redisConfig);
store.on('disconnect', function() {
createMiddlware();
});
app.set('sessionStore', store);
settings.store = store;
sessionMiddleware = session(settings);
}, 2000);
createMiddlware();
return function(req, res, next) {
sessionMiddleware.apply(this, arguments);
}
Node.js有些坑很隐蔽,一不小心就很容易掉下去~~
回复 (7)
F
这个redis client本身就会做重连的把
I
哇哈哈
A
引用 fantasyni这个redis client本身就会做重连的把
@fantasyni 同问。
没理由不自动重连吧?
O
引用 fantasyni这个redis client本身就会做重连的把
@fantasyni @alsotang
我用的是connect-redis 之前也以为会重连,但是我发现并没有
self.client.on('error', function () { self.emit('disconnect'); });
看了下代码,它只是做了事件推送,并没有做任何处理。
F
O
引用 fantasyni@okoala redis 本来就断开重连的 看
@fantasyni 不是redis client 而是connect-redis 这个模块disconnected~~
F
引用 okoala@fantasyni 不是redis client 而是connect redis 这个模块disconnected
@okoala 他disconnected 就是底层的 redis client 抛上来的
参与回复
登录后即可参与回复。登录