我正在使用Node.js开发一个小项目。我正在使用mongoose
作为模型,因此我正在使用MongoDb
。我将会话保持在MongoStore
。我还想使用socket.io
运行Node的几个进程。来自socket.io
docs:
The MemoryStore only allows you deploy socket.io on a single process.
If you want to scale to multiple process and / or multiple servers
you can use our RedisStore which uses the Redis
NoSQL database as man in the middle.
所以我想我也需要Redis
。我是Node的新手,我想知道 - 使用两个数据库来管理应用程序的不同部分是正常的。或者有一种方法可以在运行多个Node进程时使用socket.io
并仅使用MongoDb
答案 0 :(得分:4)
最近出现了一个使用MongoStore和使用mubsub(Pub / sub for Node.js和MongoDB)的发布/订阅功能的解决方案。
它可以以与RedisStore几乎相同的方式附加到socket.io:
io.configure(function() {
io.set('store', new MongoStore({host: 'localhost', port: 27017, db:'session_db'}));
});
答案 1 :(得分:2)
Redis商店已内置于Socket.IO中,但更重要的是有两个特别需要Socket.IO的重要功能:
1)发布 - 订阅(在进程之间进行通信)
2)键值存储(存储有关连接的所有信息)
虽然可以使用MongoDB完成键值存储部分,但它不提供pub-sub功能。
底线,如果您需要扩展超过一个进程(意味着您期望超过几千个并发请求),那么RedisStore就是解决方案。
资源: