一种基于memcache的线程安全消息队列制造技术

技术编号:17779516 阅读:59 留言:0更新日期:2018-04-22 07:55
本发明专利技术涉及计算机应用技术领域,具体的讲涉及一种基于memcache的线程安全消息队列,包括消息队列初始化模块、新消息插入队列模块、获取消息模块,所述消息队列初始化模块在新开聊天室时,队列开始初始化,将聊天室的uuid作为队尾标识的‘key’,队尾标识的‘value’设置为空;所述新消息插入队列模块通过聊天室的uuid获取到队尾标识的value,safeset最后一条消息的‘value’‑>’next’为新消息的key,safeset新消息的<key,value>,修改队尾标识的value为当前消息的key。本发明专利技术将聊天室中的消息缓存在系统内存中,减轻服务器数据库的压力,提高服务器的性能和可扩展性。

【技术实现步骤摘要】
一种基于memcache的线程安全消息队列
本专利技术涉及计算机应用
,具体的讲涉及一种基于memcache的线程安全消息队列。
技术介绍
在多人在线聊天室的Web应用中,客户端之间实现消息广播,现有的技术方案是:客户端用户发送聊天消息的POST请求给服务器,服务器端把该消息写入数据库。如果多个客户端在同一时间给服务器发送聊天消息的POST请求时,服务器会把分配数据库链接池中的资源给这些请求,基于数据库的原子操作,来确保消息顺序的一致性。客户端通过javascript每隔1s向服务器发送GET请求,请求中会带上客户端保存的最新一条消息的游标值,服务器收到请求后,通过查询数据库,获取该游标值之后的数据,返回客户端结果。当聊天室在线人数过多的时候,以上的现有技术就会出现以下弊端:1.通过数据库读写消息,I/O速度慢,客户端响应时间长;2.高并发的服务器请求,会对数据库造成很高的负载,导致客户端的请求超时,甚至是服务器的崩溃。Memcached是高性能的内存缓存服务器,它可以看成是存储了很多&lt;key,value&gt;对的哈希表。通过key,可以存储或查询任意的本文档来自技高网...
一种基于memcache的线程安全消息队列

【技术保护点】
一种基于memcache的线程安全消息队列,其特征在于:包括消息队列初始化模块、新消息插入队列模块、获取消息模块,所述消息队列初始化模块在新开聊天室时,队列开始初始化,将聊天室的uuid作为队尾标识的‘key’,队尾标识的‘value’设置为空;所述新消息插入队列模块通过聊天室的uuid获取到队尾标识的value,safeset最后一条消息的‘value’‑>’next’为新消息的key,safeset新消息的<key,value>,修改队尾标识的value为当前消息的key;所述获取消息模块,获取新消息根据浏览器保存的消息uuid和聊天室uuid的MD5,定位到当前消息在队...

【技术特征摘要】
1.一种基于memcache的线程安全消息队列,其特征在于:包括消息队列初始化模块、新消息插入队列模块、获取消息模块,所述消息队列初始化模块在新开聊天室时,队列开始初始化,将聊天室的uuid作为队尾标识的‘key’,队尾标识的‘value’设置为空;所述新消息插入队列模块通过聊天室的uuid获取到队尾标识的value,safeset最后一条消息的‘value’-&gt;’next’为新消息的key,safeset新消息的&lt;key,value&gt;,修改队尾标识的value为当前消息的key;所述获取消息模块,获取新消息根据浏览器保存的消息uuid和聊天室uuid的MD5,定位到当前消息在队列的位置,以及获取到该条消息的value,再根据’value’-&gt;’next’定位下一条消息,重复以上操作直到’value’-&gt;’next’为空,完成新消息的遍历,同理,通过’value’-&gt;’prev’,重复以上操作,直到’value’-&gt;’prev’为空,完成历史消息的遍历。2.根据权利要求1所述的一种基于memcache的线程安全消息队列,其特征在于:所述队尾标识是用来保存队列中最后一条消息的标识,其&lt;key,value&gt;中key为聊天室的唯一标识,value为聊天室中最后一条消息的key,聊天室初始化时,value为空。3.根据权利要求1所述...

【专利技术属性】
技术研发人员:李伟王承明
申请(专利权)人:成都萌想科技有限责任公司
类型:发明
国别省市:四川,51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1