【发布时间】:2019-09-07 05:28:33
【问题描述】:
跨多个服务器存储用户的 socket.id 的最佳方式是什么?以一个简单的聊天应用程序为例,如果不同服务器上的两个用户正在相互发送消息,则两个服务器必须将每个用户的套接字 id 存储在某个地方,以便他们可以将消息从一个用户发送到另一个用户。
目前我正在使用 redis 哈希来存储每个用户的套接字 id(如果他们在线),但如果用户有两个连接(例如他们打开了聊天应用程序的两个选项卡),这将不起作用。继续使用 redis 的最佳方法是重新构建数据结构,使其在用户连接两次时可以正常工作,还是迁移到 mongodb 或 mysql 之类的东西会更好?
我还想要一种使数据过期的方法,例如,如果套接字 id 存储超过 24 小时,那么它应该被自动删除。我已经研究过用 redis 来做这件事,但似乎不可能只删除散列中的一对。过期数据可以在 mysql 或 mongodb 中完成吗?
【问题讨论】:
标签: mysql node.js mongodb redis socket.io