connect-mongo和connect-redis分别有啥区别?
发布于 9 年前 作者 yiranrucianjing 4884 次浏览 最后一次编辑是 8 年前 来自 问答

各自的作用和区别,求解。

4 回复

他们都是为 express-session 写的扩展… express-session 的 store 参数可以传入一个 session store 实例。

这个实例必须是一个EventEmitter,还必须要有store.destroy(sid, callback)store.get(sid, callback)store.set(sid, session, callback)方法。另外有一些推荐实现的方法… connect-mongo和connect-redis都是实现了上述方法的实例,更多实例还有这些

这些实例的用处是: 将session存储在对应的存储介质中。store.get(sid, callback)是取,store.set(sid, session, callback)是存,不同的是connect-mongo把session存在了mongodb中,connect-redis把session存在了redis中。我们也可以增加一个connect-memcached把session存在memcached中…

把session存在其他介质中可以让session稳定、持久化一些。默认express-session把session存在内存里,程序崩溃session就丢失了。。

===========分割线=============

我写过一个没有用 express-session 的 redis-session 中间件,蛋疼地造了一个轮子……

https://github.com/albin3/express-redis-session

app.use(expressSession({ secret : ‘SECRET’, cookie : {maxAge: 60601000}, store : new mongoStore({ db : mongoose.connection.db }) }));

MongoError: cannot establish topology capabilities as driver is still in process of connecting

app.use(expressSession({ secret : 'SECRET’, cookie : {maxAge: 60601000}, store : new mongoStore({ db : ‘microblog’ // 换成字符串就好了… }) }));

回到顶部