站内消息-数据设计

简单的站内消息

分表来设计。把msg内容存另一张表
表msg_send:
ID、发送者ID、接收者ID、msg_id(消息内容ID)、阅读状态、delete_time(是否删除)

表msg_content:
msg_id、title、content

适合群发不规则用户的站内消息

如群发不是所有人,不是某类人,而是根据有订单或积分>200的不规则用户,适合此项
表msg_send:
ID、发送者ID、所有接收者IDS、msg_id(消息内容ID)、date

表msg_content:
msg_id、title、content

表msg_status:
用户id、msg_id、del删除状态

查询用户A的所有消息ID
$send_ids=查询msg_send表,条件: 接收者IDS like ',uid,', 返回:msg_send的ID列

根据A的所有消息ID,查询消息内容
查询msg_content表

根据A的所有消息ID,查询消息状态
查询msg_status表关联msg_content表,条件msg_id in $send_ids and 用户id=uid and del=0
返回结果都是已读,对比后自然得出已读未读状态

这样的好处是群发一条100W人的消息,msg_send和msg_content都只各一条数据,msg_status已读一人加一条,僵尸用户不增加数据
msg_send存入所有接收者IDS格式为json的'[0,12,16,0]'

百万级用户量的站内信设计

2个表:消息表、用户消息容器表
管理员发一条站内信,系统往站内信表插入一条数据,其中发送方式区分接收的对象(0为全体发送,1为只发送给注册会员,2为只发送给企业会员,3为指定会员发送),这样,发送给全体会员的一条站内信暂时只生成了一条数据。

前台会员登陆或的时候,根据会员自身的会员类型(普通会员,企业会员)查询站内信表中属于自己的最新消息(根据自己所持消息的最新时间与消息表的发送时间做 比对)或(是否存在做对比),往消息容器中插入自身与所持消息的关联数据,默认未未读。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容