HashMap加双向链表构建IM系统会话列表内存模型的示例分析
发表于:2025-01-25 作者:千家信息网编辑
千家信息网最后更新 2025年01月25日,HashMap加双向链表构建IM系统会话列表内存模型的示例分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。IM系统都有一个会话列表
千家信息网最后更新 2025年01月25日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安全错误
数据库的锁怎样保障安全
强化个人网络安全意识
数据库怎么更新一张表中
工行金融信用信息基础数据库
网络安全主题绘画初中
网络安全审办办法
网络技术行业背景调查
唐山大学生数据库应用机构
西城区智能网络技术哪里好
服务器硬件结构图
方舟进化生存加入不了服务器
深圳佑辰网络技术有限公司客服
酒店网络安全监控
数据库导入数据找不到i
互联网企业科技创新实例
陕西信合软件开发
互联网科技公司主要干嘛的
广州市和盛创软件开发有限公司
数据库如何打开gb表
北京宽视网络技术
网络安全工程师证
天津司法电信网络安全
我国互联网网络安全太势
临沂质量好的联想服务器总代理
国产数据库安全性
前端怎么与数据库关联
环宇智盛北京网络技术
软件开发费与服务费税率
江苏供应商外贸软件开发
gis导出到数据库
我的世界一进服务器就重启