请教站内信的设计思路

发布于 2022-09-06 20:26:38 字数 462 浏览 19 评论 0

现在的站内信实现方式如下,共两个表.
message表
图片描述

message_content表
图片描述

后台管理员发送全局消息的时候,只向message_content表中,插入一条type=global消息即可,然后前台会员登录时拉取消息到message表中。
但是,目前我的网站有50W会员我只想向一部分会员,比如40W会员发送消息,这就难住我了。。。
请这时候,要如何设计表?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

苍景流年 2022-09-13 20:26:38

最简单的方法,设置自定义规则。

message表再加两个字段,自定义条件字段如 map,值 value 。然后用 type 区分(你的type应该放到message表,而不是message_content表),比如 type=group 的时,表示某个会员组接收,map为=时,value为1时就表示,会员组为1。。type为point,map为>,value为100,就表示积分大于100,type为users,map为in,value=1,2,3。就标识用户id为1、2、3这三个人。

基本上就可以了。

站内信的思路就是要条件可以自定义。

生活了然无味 2022-09-13 20:26:38

把拉取顺序倒置一下,在生成消息模板的时候,就预先把要接收的用户分发出去;

生成message_content表数据,要选择下发的用户,选完用户可以把这些用户ID存放在redis中,然后用户上线的时候,从redis中读取,有数据就给提示,用户已查看,就删除,然后存入message表。

(如果不用redis,直接插入message表也行,只需要插入message_content_iduser_id就可以了,读取状态字段在数据表中默认设置为0未查看,然后采用批量插入的方式,也挺快的)

结合一下 @lscho 的数据表设计就差不多了。


以上推送模式都有一个缺点:就是消息模板不能实时推送给用户,必须要用户下次登陆或者触发某个页面,才能得到消息。workerman的消息推送框架了解一下

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文