本文由作者“fzully”授权发布,他的博客地址是:blog.csdn.net/fzrlly。即时通讯网收录时,有较大范围修订和改动,感谢原作者的分享。
11.jpg (40.65 KB, 下载次数: 2068)
下载附件 保存到相册
4 年前 上传
52im_qr_即时通讯技术圈_400px.png (17.47 KB, 下载次数: 2000)
author.jpg (28.31 KB, 下载次数: 2020)
22.jpg (39.94 KB, 下载次数: 2084)
33.jpg (22.49 KB, 下载次数: 2064)
640个ID + 不定数量的已读人员ID
未读人员ID + 已读人员ID,合计640个ID
考虑让不同的消息共用群成员列表,即把消息的阅读状态与群成员列表分开存储,并记录它们之间的关联。
群成员列表空间 + 1024条消息的阅读状态:640 * 4 + 1024 * 每条消息的阅读状态所占空间
很自然会想到用bit来表示已读人员,因为一个32位整型可表示32个人的已读状态。bit的顺序只需与群成员列表的顺序一致即可。
44.jpg (20.36 KB, 下载次数: 2029)
来源:即时通讯网 - 即时通讯开发者社区!
轻量级开源移动端即时通讯框架。
快速入门 / 性能 / 指南 / 提问
轻量级Web端即时通讯框架。
详细介绍 / 精编源码 / 手册教程
移动端实时音视频框架。
详细介绍 / 性能测试 / 安装体验
基于MobileIMSDK的移动IM系统。
详细介绍 / 产品截图 / 安装体验
一套产品级Web端IM系统。
详细介绍 / 产品截图 / 演示视频
引用此评论
引用:laojichuxin 发表于 2020-06-29 15:08 一个群,给用户生成单独的群ID,,基于 群ID ,做消息一读未读,是不是占用字节数更少。例如: 我这里以 ...
引用:JackJiang 发表于 2020-06-29 15:43 我感觉把问题搞复杂了,位运算,不管从哪个角度来说,都很难以维护
引用:laojichuxin 发表于 2020-06-29 17:49 是有点计算换空间了,消息上,携带一个数,作为已读未读的标识数字。 各有优缺点。
引用:JackJiang 发表于 2020-06-29 22:16 我觉得文章中作者太过于追求存储空间的优化了,点到为止即可,从可维护性、易用性、硬件成本上找到平衡是 ...
引用:fzully 发表于 2020-09-07 16:17 看来方案基本受认可,就是觉得位操作维护麻烦。 给大家个白嫖的机会,公开关联的代码,等整理完再发(
引用:fzully 发表于 2020-09-08 23:13 附件给出了bit位如何用在阅读状态,给出了关键实现,而不是全部源码。配合Jack一楼的文字介绍,更好理解 ...
引用:一个菠萝 发表于 2020-10-20 09:50 如果每个会话的消息是有顺序的,那已读状态就是记录会话中的每个人已读的最大值;这样群成员的已读状态就会 ...
引用:JackJiang 发表于 2020-10-20 11:03 消息顺序,从理论上是很难百分百保证的,所以任何依赖于顺序的逻辑,都存在因乱序而导致的不正确性
引用:一个菠萝 发表于 2020-10-20 12:06 很多分布式id方案都可以解决id的有序性
引用:fzully 发表于 2020-12-25 00:08 用户读了某条消息,不能简单认定该会话的在这条消息之前的所有消息都是已读的。 用户可能跳着阅读,比如 ...
精华主题数超过100个。
连续任职达2年以上的合格正式版主
为论区做出突出贡献的开发者、版主等。
经核实认证的即时通讯技术开发者、技术博主、开源工程作者、原创精华文章作者等。
Copyright © 2014-2024 即时通讯网 - 即时通讯开发者社区 / 版本 V4.4
苏州网际时代信息科技有限公司 (苏ICP备16005070号-1)
Processed in 0.125000 second(s), 42 queries , Gzip On.