HashMap加双向链表构建IM系统会话列表内存模型的示例分析
发表于:2024-11-18 作者:千家信息网编辑
千家信息网最后更新 2024年11月18日,HashMap加双向链表构建IM系统会话列表内存模型的示例分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。IM系统都有一个会话列表
千家信息网最后更新 2024年11月18日HashMap加双向链表构建IM系统会话列表内存模型的示例分析
HashMap加双向链表构建IM系统会话列表内存模型的示例分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
IM系统都有一个会话列表页,当某个会话收到或者发送消息后,该会话会排到会话顶部。由于支持消息漫游,服务器端需要保存每个用户客户端的会话顺序。如何才能在海量消息收发的场景下,准确记录各个客户端的会话顺序呢?
可以采用一个类似LRU内存淘汰的算法来解决这个问题。采用HashMap与LinkList(链表)组合的方式(如下图)。
图中左边是一个Map结构,可以通过sessionid快速索引到具体session(会话)数据,session数据以链表形式存储(图中右边部分)。
当这个会话收到或者发送消息时,通过Map在O(1)的时间定位到具体会话数据,然后修改会话数据的链表指针,将此会话数据放到链表头部(top)。完成整个操作时间复杂度是常量,可视为O(1)级别。效率很高。
当其他设备拉取会话列表时,按照链表顺序,分批返回会话列表即可。
实际研发层面,考虑到数据持久化以及研发效率,可选用Redis的SortedSet结构,时间复杂度为O(lg N),N为会话数量。适当控制保存会话的数量,这个复杂度完全可以接受。
关于HashMap加双向链表构建IM系统会话列表内存模型的示例分析问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。
数据
消息
问题
内存
系统
分析
复杂
复杂度
时间
顺序
双向
模型
示例
客户
效率
数量
更多
端的
结构
图中
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
福建多功能软件开发服务价格
宿迁idc服务器厂商
野外求生视频软件开发
excel数据库开发软件
工控网络技术差分码
数据库连接文件怎么操作
日历hgp怎么用服务器连接主板
云计算机网络技术工资
河南熙铭网络技术有限公司靠谱吗
网络安全学习机构哪个好
电脑小白自学网络安全
湖北订制软件开发企业
阿尔比恩 服务器
甘肃曙光服务器维修系统虚拟主机
长宁区服务器设备回收哪家便宜
网络技术对著作权有什么影响
王者荣耀注销服务器怎么删除
求购金融终端数据库
网络技术前景统计
吉林市天创网络技术有限公司
安徽省网络安全申论范文
计算机网络技术内容简介
外包软件开发安全协议
数据库连接文件怎么操作
自己部署文件服务器
sqlite数据库有多少个表
湖北惠普服务器虚拟化迁移
50还能找到软件开发工作
科技和互联网关系
杭州专业软件开发哪家实惠