基于MySQL计数器表的高并发计数方法及web服务器技术

技术编号:17597245 阅读:19 留言:0更新日期:2018-03-31 10:22
本发明专利技术公开了一种基于MySQL计数器表的高并发计数方法,包括步骤:在MySQL计数器表中设置多个槽位,且多个槽位对应的多个槽位值存入预设栈;实时检测是否发生计数事件;若检测到计数事件,将计数事件存储至消息队列;开启与槽位数量相同的多个计数线程以使各计数线程从消息队列中读取计数事件、从预设栈中读取槽位值、将计数事件更新至槽位值、将已进行计数的计数事件从消息队列中删除并将更新后的槽位值返回预设栈。与现有技术相比,本发明专利技术通过消息队列实现了将web应用计数操作与MySQL计数器的计数操作进行解耦,通过设置多个槽位来对同一时刻的大量计数事件进行并发的计数操作,其保证了MySQL计数器的计算操作不会发生阻塞,大大提高了高并发计数时的效率。

High concurrency counting method and web server based on MySQL counter table

The invention discloses a counting method comprises the steps of high concurrency, MySQL counter based on the table in the MySQL counter table is provided with a plurality of slots, and a plurality of slots a slot corresponding to the preset value stored in the stack; real time detect the occurrence of counting events; if the detected event count, counting events to storage message queue; open the slot and the same number of multiple threads so that each thread count count from the message queue read count events, from the default stack read slot value, counting event count event update to the slot value, will have to count the deleted from the message queue and the updated slot returns the default stack. Compared with the prior art, the invention realizes the message queue by counting operation web application and MySQL counting operation counter decoupling, counting the concurrent operation by setting multiple slots on the same time a large number of counting events, which ensures that the calculation operation will not MySQL counter congested, greatly improving the efficiency of high the concurrent counting.

【技术实现步骤摘要】
基于MySQL计数器表的高并发计数方法及web服务器
本专利技术涉及web
,尤其涉及一种基于MySQL计数器表的高并发计数方法及web服务器。
技术介绍
MySQL计数器表在Web应用中很常见,比如:需要统计用户对网站的点击次数、文件下载数以及网站的新增用户数等等,都需要用到计数器。通常,Web开发者会将计数相关的数据单独创建一张表,这样可以使得计数器表小而快,但是MySQL中对于这条记录的计数器的行更新操作,会有一个行级的事务,即这条记录会有一个全局的互斥锁。在同一时候,只能有一个进程(或线程)对该条记录进行更新,因此,在高并发的情况下,计数器的更新操作会变的很慢,导致进程(线程)阻塞,使得性能变低。因此,有必要提供一种基于MySQL计数器表的高并发计数方法及web服务器来解决上述技术问题。
技术实现思路
本专利技术的主要目的在于提出一种基于MySQL计数器表的高并发计数方法及web服务器,旨在解决现有技术中利用MySQL计数器表进行计数时无法进行并发计数、导致计数器容易阻塞、计数性能低的技术问题。首先,为实现上述目的,本专利技术提供一种基于MySQL计数器表的高并发计数方法,应用于web服务器,所述基于MySQL计数器表的高并发计数方法包括以下步骤:在MySQL计数器表中设置多个槽位,且多个槽位对应的多个槽位值存入预设栈;实时检测是否发生计数事件;若检测到计数事件,将所述计数事件存储至消息队列;开启与所述槽位数量相同的多个计数线程以使各所述计数线程从所述消息队列中读取所述计数事件、从所述预设栈中读取所述槽位值、将所述计数事件更新至所述槽位值、将已进行计数的所述计数事件从所述消息队列中删除并将更新后的所述槽位值返回所述预设栈。可选地,所述基于MySQL计数器表的高并发计数方法还包括:统计当前计数结果时,从所述MySQL计数器表中读取各所述槽位对应的槽位值;将各所述槽位值相加并将相加后的和值作为当前计数结果。可选地,所述MySQL计数器表中还设置有日期;所述统计当前计数结果时,从所述MySQL计数器表中读取各所述槽位对应的槽位值的步骤具体为:获取当前日期;根据所述当前日期从对应日期的MySQL计数器表中读取各所述槽位对应的槽位值。可选地,所述开启与所述槽位数量相同的多个计数线程以使所述计数线程从所述预设栈中取出所述槽位值的步骤之后还包括:检测所述预设栈是否为空;若检测结果为是,则将所述计数线程从所述消息队列中取出的计数事件再次存储至所述消息队列;若检测结果为否,则执行所述从所述预设栈中读取所述槽位值的步骤。可选地,所述将所述计数事件存储至消息队列的步骤具体为:将所述计数事件并发存储至所述消息队列。同时,本专利技术还提供一种web服务器,所述web服务器包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于MySQL计数器表的高并发计数程序,所述基于MySQL计数器表的高并发计数程序被所述处理器执行时实现如下步骤:在MySQL计数器表中设置多个槽位,且多个槽位对应的多个槽位值存入预设栈;实时检测是否发生计数事件;若检测到计数事件,将所述计数事件存储至消息队列;开启与所述槽位数量相同的多个计数线程以使各所述计数线程从所述消息队列中读取所述计数事件、从所述预设栈中读取所述槽位值、将所述计数事件更新至所述槽位值、将已进行计数的所述计数事件从所述消息队列中删除并将更新后的所述槽位值返回所述预设栈。可选地,所述基于MySQL计数器表的高并发计数程序被所述处理器执行时,还用于实现以下步骤:统计当前计数结果时,从所述MySQL计数器表中读取各所述槽位对应的槽位值;将各所述槽位值相加并将相加后的和值作为当前计数结果。可选地,所述MySQL计数器表中还设置有日期;所述基于MySQL计数器表的高并发计数程序被所述处理器执行时,还用于实现以下步骤:获取当前日期;根据所述当前日期从对应日期的MySQL计数器表中读取各所述槽位对应的槽位值。可选地,所述开启与所述槽位数量相同的多个计数线程以使所述计数线程从所述预设栈中取出所述槽位值的步骤之后,所述基于MySQL计数器表的高并发计数程序被所述处理器执行时,还用于实现以下步骤:检测所述预设栈是否为空;若检测结果为是,则将所述计数线程从所述消息队列中取出的计数事件再次存储至所述消息队列;若检测结果为否,则执行所述从所述预设栈中读取所述槽位值的步骤。此外,为实现上述目的,本专利技术还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有基于MySQL计数器表的高并发计数程序,所述基于MySQL计数器表的高并发计数程序被处理器执行时实现如上所述的基于MySQL计数器表的高并发计数方法的步骤。相较于现有技术,本专利技术所提出的基于MySQL计数器表的高并发计数方法、web服务器及计算机可读存储介质,对MySQL计数器表进行改进,设置多个槽位并将多个槽位对应的多个槽位值存入预设栈,之后检测到计数事件时,首先将所述计数事件存储至消息队列,然后开启与所述槽位数量相同的多个计数线程以使各所述计数线程从所述消息队列中读取所述计数事件、从所述预设栈中读取所述槽位值、将所述计数事件更新至所述槽位值、将已进行计数的所述计数事件从所述消息队列中删除并将更新后的所述槽位值返回所述预设栈,本专利技术通过消息队列实现了将web应用计数操作与MySQL计数器的计数操作进行解耦,通过设置多个槽位来对同一时刻的大量计数事件进行并发的计数操作,其保证了MySQL计数器的计算操作不会发生阻塞,大大提高了高并发计数时的效率。附图说明图1为本专利技术基于MySQL计数器表的高并发计数方法第一实施例的实施流程示意图;图2为本专利技术基于MySQL计数器表的高并发计数方法第二实施例的实施流程示意图;图3为本专利技术基于MySQL计数器表的高并发计数程序第一实施例的功能模块示意图;图4为本专利技术基于MySQL计数器表的高并发计数程序第二实施例的功能模块示意图;图5为本专利技术基于MySQL计数器表的高并发计数方法进行计数时一实施例的示意图。附图标记:基于MySQL计数器表的高并发计数程序400计数器表设置模块401检测模块402消息队列模块403计数模块404空栈检测模块405消息队列写入模块406计数统计模块407流程步骤S301-S304、S401-S408本专利技术目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。具体实施方式应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本专利技术的说明,其本身没有特定的意义。因此,“模块”、“部件”或“单元”可以混合地使用。Web(WorldWideWeb,也称WWW或万维网)是Internet上集文本、声音、动画、视频等多种媒体信息于一身的信息服务系统,整个web系统由Web服务器、浏览器(Browser)及通信协议等3部分组成。Web系统采用的通信协议是超文本传输协议(HTTP,HyperTextTransferProtocol),它可以传输任意类型的数据对象,是Internet发布多媒体信息的主要协议。WWW中的信息资源主要由一篇篇的网页为基本元素构成,所有网页采用超文本标记语言(HTM本文档来自技高网...
基于MySQL计数器表的高并发计数方法及web服务器

【技术保护点】
一种用于MySQL计数器表的高并发计数方法,应用于web服务器,其特征在于,所述基于MySQL计数器表的高并发计数方法包括以下步骤:在MySQL计数器表中设置多个槽位,且多个槽位对应的多个槽位值存入预设栈;实时检测是否发生计数事件;若检测到计数事件,将所述计数事件存储至消息队列;开启与所述槽位数量相同的多个计数线程以使各所述计数线程从所述消息队列中读取所述计数事件、从所述预设栈中读取所述槽位值、将所述计数事件更新至所述槽位值、将已进行计数的所述计数事件从所述消息队列中删除并将更新后的所述槽位值返回所述预设栈。

【技术特征摘要】
1.一种用于MySQL计数器表的高并发计数方法,应用于web服务器,其特征在于,所述基于MySQL计数器表的高并发计数方法包括以下步骤:在MySQL计数器表中设置多个槽位,且多个槽位对应的多个槽位值存入预设栈;实时检测是否发生计数事件;若检测到计数事件,将所述计数事件存储至消息队列;开启与所述槽位数量相同的多个计数线程以使各所述计数线程从所述消息队列中读取所述计数事件、从所述预设栈中读取所述槽位值、将所述计数事件更新至所述槽位值、将已进行计数的所述计数事件从所述消息队列中删除并将更新后的所述槽位值返回所述预设栈。2.如权利要求1所述的基于MySQL计数器表的高并发计数方法,其特征在于,所述基于MySQL计数器表的高并发计数方法还包括:统计当前计数结果时,从所述MySQL计数器表中读取各所述槽位对应的槽位值;将各所述槽位值相加并将相加后的和值作为当前计数结果。3.如权利要求2所述的基于MySQL计数器表的高并发计数方法,其特征在于,所述MySQL计数器表中还设置有日期;所述统计当前计数结果时,从所述MySQL计数器表中读取各所述槽位对应的槽位值的步骤具体为:获取当前日期;根据所述当前日期从对应日期的MySQL计数器表中读取各所述槽位对应的槽位值。4.如权利要求2所述的基于MySQL计数器表的高并发计数方法,其特征在于,所述开启与所述槽位数量相同的多个计数线程以使所述计数线程从所述预设栈中取出所述槽位值的步骤之后还包括:检测所述预设栈是否为空;若检测结果为是,则将所述计数线程从所述消息队列中取出的计数事件再次存储至所述消息队列;若检测结果为否,则执行所述从所述预设栈中读取所述槽位值的步骤。5.如权利要求1所述的基于MySQL计数器表的高并发计数方法,其特征在于,所述将所述计数事件存储至消息队列的步骤具体为:将所述计数事件并发存储至所述消息队列。6.一种web服务器,其特征在于,所述web服务器包括存储器、处理器及存储在所述存储器上并可在所述处...

【专利技术属性】
技术研发人员:郑秋燕
申请(专利权)人:努比亚技术有限公司
类型:发明
国别省市:广东,44

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

1