node.js - 如何使用 nodejs、redis 和 mongodb 设计基于聊天的应用程序?

标签 node.js mongodb redis publish-subscribe

我们有一个具有聊天功能的 iOS 应用程序。目前它适用于长轮询。现在我们正在尝试修改它以使用套接字。关于套接字,我们已经开始进行研究,似乎最好的选择之一是将 nodejs 与 socket.io 一起使用。然后我们使用 redis pub/sub 来管理消息传递和存储。

经过对 redis 的一些研究,推荐的用法表明存储的数据应该适合内存。但是,我们有一个有点大的数据库。我们想存储整个聊天记录。所以我们开始计划使用redis作为缓存数据库,将在线用户的聊天记录(可能不是全部)存储起来,并在从redis到mongodb/simpledb(或两者都立即)下线后写入实际对话).

所以总结一下,我们即将决定使用nodejs和redis pub/sub来传递消息,redis作为缓存数据库,mongodb来存储整个对话。

你觉得这个设计怎么样?这是可以接受的吗?或者,如果您有更好的建议,能否请您再解释一下?

提前致谢。

最佳答案

对于聊天系统,您的想法很宏大。如果您认为您将达到 100 万用户,那就去做吧。还要考虑可用性 - 您的系统将如何处理机器故障?

关于node.js - 如何使用 nodejs、redis 和 mongodb 设计基于聊天的应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10043663/

相关文章:

node.js - 如何将 Node.js 与 IPv6 结合使用?

node.js - 从 Node.js 应用程序的 CSV 文件将多个条目导入 MongoDB

javascript - 如何在 Nestjs 中刷新 token

Mongodb:按数组对象排序文档

java - MongoSink 响应后提交给 kafka 消费者 - alpakka mongo 连接器

php - mongodb在查找查询中获取_id作为字符串

azure - 使用 Azure KeyVault 添加 session 状态提供程序作为连接字符串

javascript - 序列化多对多查询问题

redis - Redis中非key的查询

redis - 使用模式删除 Redis 键