【发布时间】:2016-01-08 12:33:54
【问题描述】:
我正在编写一个需要持久存储对话的多聊天室应用程序(即新用户应该能够看到旧消息)。如果有帮助,我正在使用 socket.io。
目前,当用户登录房间时,我的节点应用程序会检查是否有人去过该房间(并且每个房间都有一个分层父级,例如名为 Pets 的房间可能属于北美,因为那里有' d 是一个单独的欧洲宠物房间)。
如果这是一个人第一次进入房间一段时间,它会从 redis 加载该房间的所有消息。 (最终 redis 存储的对话进入 MySQL)。
所以我有一个名为messages["PARENT"]["ROOM"] 的多维数组,这样messages["North America"]["Pets"] 将是一个包含该房间所有消息的数组。除了误解 JS 中的数组是如何工作的(正如这个问题中所解释的:javascript push multidimensional array),感觉就像我把情况复杂化了。我使用 MD 数组的原因是,往返请求所有来自 Redis 的消息以获取一个活动的房间是没有意义的。
什么是我想要完成的最合乎逻辑的方法?我应该只使用 Redis 并放弃这个吗?一些消息队列或发布订阅服务器怎么样? (我尽量不让这件事复杂化,因为它只是给朋友的原型)。
谢谢,
【问题讨论】:
-
顺便说一句,我并不是一个真正的节点开发者,只是为了帮助一个朋友。
标签: javascript node.js multidimensional-array redis publish-subscribe