我现在能想到的是每次用户登录之后,拉取系统消息然后记录到消息表,作已读未读的判断。。。
求指导
1
nilai 2015-06-25 10:04:01 +08:00 1
建立一个表, 放消息id 未读消息用户id(1,2,3,4,5) 当某个用户已经读取了这个消息后 再更新这个字段,移除当前用户id
|
2
zhouyuan24 2015-06-25 10:07:29 +08:00
还有就是 last_read_recordID
维护最后读得那条 聊天记录 ID >它得 就是未读, <它得 就是已读 |
3
Tr0y 2015-06-25 10:47:02 +08:00 4
用redis的bitmap,2MB空间就可以分配很多用户了,2进制,0表示未读,1表示已读。
|
4
picasso250 2015-06-25 10:54:03 +08:00
我们就是这样做的
|
6
mhycy 2015-06-25 11:50:49 +08:00 2
映射表做法算是最合适的做法了吧
消息表: 消息id,发布者id,内容,时间,更新时间,状态 状态表: 用户id,消息id,状态 对于全局消息,直接读消息表,对于部分群发消息或对于一对一消息,读状态表 |
7
demonchang OP |
8
mhycy 2015-06-25 12:18:18 +08:00
|
10
lianyue 2015-06-25 14:42:02 +08:00 via iPhone
这和语关系 吧 是数据库结构问题
|
11
rogeecn 2015-06-25 16:43:01 +08:00
@zhouyuan24 如果,12345用户名只读了135,246是个未读你这怎么办?
|
12
blue7wings 2015-06-29 16:09:40 +08:00
我觉得应该是这样的:
首先是user表,user_table: id | name | xxxx | 然后是message表,message_table: id | content | xxxx | 加一张中间表,user_message: user_id | message_id | status | 如果status状态为1就表示已读,这张表可以添加索引,也可以使用缓存技术,数据虽然大,应该不会太慢的。。 |