为了账号安全,请及时绑定邮箱和手机立即绑定

标记用户是否已读

标记用户是否已读

RISEBY 2019-02-24 11:16:20
我现在有一条消息发布出去,假如有一万人同时接收到,我现在在数据库 增加了一个 字段 存储已读过的用户 的用户名 用逗号隔开, 假如这么多用户的话 那么 这个标记字段长度就得非常长了 这样就不合理了。 所以我想问的是有没什么比较好的方案 对于同一条消息 标记当前用户是否已读过
查看完整描述

6 回答

?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

查看完整回答
反对 回复 2019-03-01
?
蓝山帝景

TA贡献1843条经验 获得超7个赞

可以用bitmap来存储,把用户id 减去最小的用户id + 1得出的id,在相应的位上用0、1表示是否已读就哦了

查看完整回答
反对 回复 2019-03-01
?
喵喵时光机

TA贡献1846条经验 获得超7个赞

你可以设计一张 user_id msg_id status的表,存储相应的状态。如果数据库压力大,可以考虑用redis缓存+本地缓存解决。

查看完整回答
反对 回复 2019-03-01
?
噜噜哒

TA贡献1784条经验 获得超7个赞

如果用户量不大的话,可以设计一张用户消息表,每给一个用户发一条消息就存储到里面,已读未读就一个字段标识就可以了。用户量大的话会造成很大的存储浪费,可以记录一张消息-用户表,里面只记录读了这条消息的用户,只不过在显示某个用户消息的时候需要做点处理。

查看完整回答
反对 回复 2019-03-01
?
九州编程

TA贡献1785条经验 获得超4个赞

Redis

  1. 消息id作为key存 true 表示未读
  2. 读消息的时候吧这个 key 删掉
查看完整回答
反对 回复 2019-03-01
  • 6 回答
  • 0 关注
  • 710 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信