0

我正在使用 Node.js 开发一个小项目。我正在使用mongoose模型,因此我正在使用MongoDb. 我保持会话MongoStore。我也想使用socket.io运行几个 Node.js 进程。来自socket.io文档:

    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 的新手,我想知道 - 使用两个数据库来管理应用程序的不同部分是否正常。socket.io或者在运行Node的多个进程并且仅使用时有一种方法可以使用MongoDb

4

2 回答 2

4

就在最近,出现了一个使用 MongoStore 和使用mubsub(Node.js 和 MongoDB 的 Pub/sub)的 pub/sub 功能的解决方案。

它可以以与 RedisStore 几乎相同的方式附加到 socket.io:

io.configure(function() {
    io.set('store', new MongoStore({host: 'localhost', port: 27017, db:'session_db'}));
});

更多信息和来源:https ://github.com/kof/socket.io-mongo

于 2012-07-08T14:50:32.733 回答
2

Redis store 已经内置在 Socket.IO 中,但更重要的是有 2 个 Socket.IO 特别需要的重要特性:

1) 发布-订阅(进程间通信)
2) 键值存储(存储所有连接信息)

虽然键值存储部分可以使用 MongoDB 完成,但它不提供 pub-sub 功能。

归根结底,如果您需要扩展一个进程(意味着您期望超过数千个并发请求)而不是 RedisStore 是解决方案。

资源:

于 2012-05-22T09:06:25.280 回答