Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 节点聊天室,将消息存储在阵列中还是仅存储在redis中?_Javascript_Node.js_Multidimensional Array_Redis_Publish Subscribe - Fatal编程技术网

Javascript 节点聊天室,将消息存储在阵列中还是仅存储在redis中?

Javascript 节点聊天室,将消息存储在阵列中还是仅存储在redis中?,javascript,node.js,multidimensional-array,redis,publish-subscribe,Javascript,Node.js,Multidimensional Array,Redis,Publish Subscribe,我正在编写一个多聊天室应用程序,它需要会话的持久存储(即新用户应该能够看到旧消息)。如果有帮助的话,我正在使用socket.io 目前,当用户登录某个房间时,“我的节点”应用程序会检查是否有人去过该房间(每个房间都有一个分层的父房间,例如称为“宠物”的房间可能属于北美,因为那里有一个单独的欧洲宠物房间) 如果这是第一次有人在房间里呆了一段时间,它会从redis加载该房间的所有消息。(最终redis存储的对话进入MySQL) 因此,我有一个多维数组,名为messages[“PARENT”][“RO

我正在编写一个多聊天室应用程序,它需要会话的持久存储(即新用户应该能够看到旧消息)。如果有帮助的话,我正在使用socket.io

目前,当用户登录某个房间时,“我的节点”应用程序会检查是否有人去过该房间(每个房间都有一个分层的父房间,例如称为“宠物”的房间可能属于北美,因为那里有一个单独的欧洲宠物房间)

如果这是第一次有人在房间里呆了一段时间,它会从redis加载该房间的所有消息。(最终redis存储的对话进入MySQL)

因此,我有一个多维数组,名为
messages[“PARENT”][“ROOM”]
,这样
messages[“North America”][“Pets”]
将是一个包含该房间所有消息的数组。除了误解JS中的数组是如何工作的(正如在这个问题中所解释的:),我感觉情况过于复杂了。我使用MD阵列的理由是,对于一个处于活动状态的房间,往返请求Redis发送所有消息是没有意义的

对于我想要实现的目标,最合乎逻辑的方法是什么?我应该使用Redis并放弃这个吗?消息队列或者pubsub服务器怎么样?(我尽量不让这件事复杂化,因为这只是一个朋友的原型)


谢谢,

从建筑的角度来看,这是一个糟糕的设计。如果明天您想通过设置更多服务器来扩展此应用程序,该怎么办?当然,这些多维数组将特定于每个节点实例。解耦存储有其自身的优势,一个是向外扩展—存储现在在多个服务器之间共享。这完全取决于你想要实现什么。如果MD的大小增加,也可能会耗尽内存,从而影响应用程序的性能。

顺便说一句,我并不是一个真正的节点开发人员,只是愿意帮助朋友。我完全同意——我只是担心每次往返redis,还是我过于谨慎?是的,你是,这是一件好事。但是,当您的应用程序必须处理多个用户时,请务必查看后果。有了你的设计,系统会变得非常复杂。软件设计本身就是一门艺术@StackOverflow如果我的答案符合您的期望,那么请为这个社区选择答案@StackOverflow