简单地 一个消息表,(消息ID,用户,角色,消息)三个字段 如果是按用户发,就写用户和消息字段 如果按角色发,就写角色和消息字段 读取消息时,同时匹配用户和消息。(用户=@usercode or 角色=@userrole)
[quote=引用 13 楼 yenange 的回复:] 这种不应当称之为消息, 用公告更合适。 可建立一个专门的公告表。 公告人人可看, 但不必为每一个人创建一条记录。 但是必须建立一个专门的日志表。 如果某人有看公告, 则此日志表有记录。 没有看公告, 则日志表无记录。 定时对比用户、公告、与日志表记录即可。 如果当前用户没有看公告(日志表无记录), 显示公告即可。 用户看了公告(点击了),则在日志表中添加一条记录。
这种不应当称之为消息, 用公告更合适。 可建立一个专门的公告表。 公告人人可看, 但不必为每一个人创建一条记录。 但是必须建立一个专门的日志表。 如果某人有看公告, 则此日志表有记录。 没有看公告, 则日志表无记录。 定时对比用户、公告、与日志表记录即可。 如果当前用户没有看公告(日志表无记录), 显示公告即可。 用户看了公告(点击了),则在日志表中添加一条记录。
数据库慢,不会使用NOSQL吗?Redis SSDB等开源软件应对百万级的数据就小意思,又不需要很大的开销,使用还简单,关键是性能也高。 使用一个Hash保存消息 :key=Message,field=角色,value=消息 一个List保存一条消息对应的用户ID :key=角色,member=用户ID 轻松解决,是不是so easy?
[quote=引用 5 楼 u010192842 的回复:] [quote=引用 4 楼 yekeyishuo 的回复:] [quote=引用 1 楼 u010192842 的回复:] 信息对应角色,用户读取的时候从角色信息中读取。
补充我楼上的发言: 对全站用户发不值得的缘故还是因为尽管一些帐号尽管不是僵尸用户,但有些是已经不来这个应用了或N久不登陆,此后也可能不再登陆的那种 我的方案并非完美,比如它只是让消息表的增速减缓以及将消息落到了比较正确的用户群中 可是这个表的数据只能增加却不能删减,因为说删除消息吧当然就是标记为未读,UI上不列出来也罢,实际上数据库里还是只能增不能减,不然一旦删除的话,他下次登陆又拉了进来咋办... 这是缺点,但又不是全天下都像BAT那般用户量大是吧,中等规模的应用我想都可以接受这个现实的,而且必要时再按用户ID分一下表,压力就大大下降了对么
34,588
社区成员
254,588
社区内容
加载中
试试用AI创作助手写篇文章吧