【技术实现步骤摘要】
一种基于memcache的线程安全消息队列
本专利技术涉及计算机应用
,具体的讲涉及一种基于memcache的线程安全消息队列。
技术介绍
在多人在线聊天室的Web应用中,客户端之间实现消息广播,现有的技术方案是:客户端用户发送聊天消息的POST请求给服务器,服务器端把该消息写入数据库。如果多个客户端在同一时间给服务器发送聊天消息的POST请求时,服务器会把分配数据库链接池中的资源给这些请求,基于数据库的原子操作,来确保消息顺序的一致性。客户端通过javascript每隔1s向服务器发送GET请求,请求中会带上客户端保存的最新一条消息的游标值,服务器收到请求后,通过查询数据库,获取该游标值之后的数据,返回客户端结果。当聊天室在线人数过多的时候,以上的现有技术就会出现以下弊端:1.通过数据库读写消息,I/O速度慢,客户端响应时间长;2.高并发的服务器请求,会对数据库造成很高的负载,导致客户端的请求超时,甚至是服务器的崩溃。Memcached是高性能的内存缓存服务器,它可以看成是存储了很多<key,value>对的哈希表。通过key, ...
【技术保护点】
一种基于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’->’next’为新消息的key,safeset新消息的<key,value>,修改队尾标识的value为当前消息的key;所述获取消息模块,获取新消息根据浏览器保存的消息uuid和聊天室uuid的MD5,定位到当前消息在队列的位置,以及获取到该条消息的value,再根据’value’->’next’定位下一条消息,重复以上操作直到’value’->’next’为空,完成新消息的遍历,同理,通过’value’->’prev’,重复以上操作,直到’value’->’prev’为空,完成历史消息的遍历。2.根据权利要求1所述的一种基于memcache的线程安全消息队列,其特征在于:所述队尾标识是用来保存队列中最后一条消息的标识,其<key,value>中key为聊天室的唯一标识,value为聊天室中最后一条消息的key,聊天室初始化时,value为空。3.根据权利要求1所述...
【专利技术属性】
技术研发人员:李伟,王承明,
申请(专利权)人:成都萌想科技有限责任公司,
类型:发明
国别省市:四川,51
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。