请问下私聊,群组这种功能后台实现逻辑以及表设计思路

Peterius的致幻脸
  • 50

我看我们公司私聊和群聊这种功能在设计上是单表的,群里一个人发送消息后,没当前群里每个人都存储一条数据。我感觉这样的方式肯定是有问题,群里有1000人,每人发送一条消息,将要存储1000*1000记录,而且很多都是冗余信息。是不是应该维护一个群组聊天记录表,根据当前用户所在的群组去找当前群组聊天记录?还是说通过消息中间件那种订阅主题模式,每一个群组做为一个主题群组成员去订阅,然后实现分发。请问下qq实现这种功能机制什么,求一个最佳实践,谢谢

回复
阅读 3.2k
3 个回答
Judge
  • 8

关于聊天记录我个人在设计网站消息分发的时候逻辑是
设置一个字段
0:面向所有用户的消息(群发)
n:给特定某个用户发的消息(发给用户id为n的用户)
所以你可以像上述方式设计,在群调取后台记录时候调取后台的标记为0的消息即可
(不过我这个是设计为单群(也就是网站全站消息),多群消息的话你可以自己结合这个逻辑考虑一下)
(不一定有用,不过这样可以节省数据库空间,也就是说,用户在调取自己信息的时候数据库会返回用户id相符和与字段为0的消息)

清水
  • 5
新手上路,请多包涵

建议使用redis

LayIM,这个是基于这个第三方的插件页面的接入案例,应该能给点灵感

宣传栏