gpt4 book ai didi

javascript - Node 聊天室,将消息存储在数组中还是只是 redis?

转载 作者:可可西里 更新时间:2023-11-01 11:46:56 26 4
gpt4 key购买 nike

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

目前,当用户登录到一个房间时,我的 Node 应用程序会检查是否有人去过那个房间(并且每个房间都有一个分层的父级,例如名为 Pets 的房间可能属于北美,因为那里' d 是一个单独的欧洲宠物室)。

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

所以我有一个名为 messages["PARENT"]["ROOM"] 的多维数组,这样 messages["North America"]["Pets"]将是一个数组,其中包含该房间的所有消息。除了误解 JS 中的数组是如何工作的(如这个问题中所解释的:javascript push multidimensional array),感觉我把情况复杂化了。我使用 MD 数组的理由是,往返请求来自 Redis 的所有消息以获取一个活跃的房间是没有意义的。

对于我想要完成的事情,最合乎逻辑的方法是什么?我应该只使用 Redis 而放弃它吗?一些消息队列或者 pubsub 服务器怎么样? (我尽量不让这个复杂化,因为它只是一个 friend 的原型(prototype))。

谢谢,

最佳答案

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

关于javascript - Node 聊天室,将消息存储在数组中还是只是 redis?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33057260/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com