队列处理方法及装置与流程

文档序号:12176664阅读:462来源:国知局
队列处理方法及装置与流程

本发明涉及通信领域,具体而言,涉及一种队列处理方法及装置。



背景技术:

随着转售业务的不断扩展,系统处理的数据量剧增,越来越多的服务采用队列的处理方式,让高并发产生的数据进入队列中,有序的处理。

然而,数据的积压也会导致程序的处理效率受到影响,传统的队列方式还会造成与数据库交互输入输出(Input OutputInterface,简称IO)压力过大的问题。

因此,目前亟需提供一种高效且可控的队列处理机制,来解决IO压力大,效率低下的问题。



技术实现要素:

本发明的主要目的在于公开了一种呼叫限制方法及装置,以至少解决相关技术中队列方式还会造成与数据库交互输入输出IO压力过大的问题。

根据本发明的一个方面,提供了一种队列处理方法。

根据本发明的队列处理方法包括:判断REDIS队列中当前总数据量;如果所述总数据量大于或等于预定阈值,则等待第一预定时长之后,重新判断REDIS队列中的总数据量;如果所述总数据量小于预定阈值,则从数据库队列表中提取预定数量的数据,填充到REDIS队列中。

优选地,从数据库队列表中提取数据,填充到REDIS队列中包括:将数据库取出的数据,逐条填充到所述REDIS队列中,其中,将数据标识作为哈希表的键,将数据内容json串作为哈希表的值,一起保存到REDIS哈希表中。

优选地,上述方法还包括:在从所述REDIS队列提取数据时,判断所述REDIS队列是否为空;如果所述REDIS队列为空,则等待第二预定时长之后,再次尝试提取所述REDIS队列中的数据;如果所述REDIS队列不为空,则根据数据标识从哈希表中取出待处理的数据内容。

优选地,根据数据标识从哈希表中取出待处理的数据内容之后,还包括:按照业务需求处理所述数据内容,返回执行从所述REDIS队列中提取下一条数据的步骤。

根据本发明的另一方面,提供了一种队列处理装置。

根据本发明的队列处理装置包括:第一判断模块,用于判断REDIS队列中当前总数据量;第一处理模块,用于在所述总数据量大于或等于预定阈值时,等待第一预定时长之后,重新判断REDIS队列中的总数据量;第二处理模块,用于在所述总数据量小于预定阈值时,从数据库队列表中提取数据,填充到REDIS队列中。

与现有技术相比,本发明实施例至少具有以下优点:可以控制REDIS内存中的临时数据量,不会发生大量数据涌入内存导致溢出的情况,同时有效的限制了与数据库的IO频率。

附图说明

图1是根据本发明实施例的队列处理方法的流程图;

图2是根据本发明优选实施例的提取数据填充到REDIS队列中的流程图;

图3是根据本发明优选实施例的从REDIS队列中取数据处理的流程图;

图4是根据本发明实施例的队列处理装置的结构框图;

图5是根据本发明优选实施例的队列处理装置的结构框图。

具体实施方式

下面结合说明书附图对本发明的具体实现方式做一详细描述。

图1是根据本发明实施例的队列处理方法的流程图。如图1所示,该队列处理方法包括:

步骤S101:判断REDIS队列中当前总数据量;

步骤S103:如果上述总数据量大于或等于预定阈值,则等待第一预定时长之后,重新判断REDIS队列中的总数据量;

步骤S105:如果上述总数据量小于预定阈值,则从数据库队列表中提取预定的数据量,填充到REDIS队列中。

采用图1所示的方法,当REDIS队列中当前总数数据量大于或等于预定阈值,则等待第一预定时长之后,之后重新判断REDIS队列中的总数据量;当REDIS队列中当前总数据量小于预定阈值时,从数据库队列表中提取预定数量的数据,填充到REDIS队列中。可以控制REDIS内存中的临时数据量,不会发生大量数据涌入内存导致溢出的情况,同时有效的限制了与数据库的IO频率。

其中,上述的预定阈值以及预定数量均为可以根据实际情况动态设置的值,两者共同作用可以控制REDIS内存中的临时数据量,不会发生大量数据涌入内存导致溢出的情况,同时有效的限制了与数据库的IO频率。此外,可以根据所处理的数据量和要求的效率,按需调整处理进程数量。

优选地,从数据库队列表中提取数据,填充到REDIS队列中可以进一步包括:将数据库取出的数据,逐条填充到上述REDIS队列中,其中,将数据标识作为哈希表的键,将数据内容json串作为哈希表的值,一起保存到REDIS哈希表中。

优选地,上述队列处理方法还可以包括:在从上述REDIS队列提取数据时,判断上述REDIS队列是否为空;如果上述REDIS队列为空,则等待第二预定时长之后,再次尝试提取上述REDIS队列中的数据;如果上述REDIS队列不为空,则根据数据标识从哈希表中取出待处理的数据内容。

在根据数据标识从哈希表中取出待处理的数据内容之后,还可以包括以下处理:按照业务需求处理上述数据内容,返回执行从上述REDIS队列中提取下一条数据的步骤。

以下结合图2和图3进一步描述上述优选实施方式。

图2是根据本发明优选实施例的提取数据填充到REDIS队列中的流程图。如图2所示,主要包括以下步骤:

步骤S201:判断REDIS队列中的当前总数据量;如果小于预定阈值,执行步骤S203,否则,执行步骤S207。

步骤S203:从数据库对列表中提取预定数量的数据。

步骤S205:将数据库取出的数据,逐条录入REDIS队列中。其中,数据ID保存到REDIS队列中;数据ID作为哈希表的键,数据内容json串作为哈希表的值,保存到REDIS哈希表中。此批数据处理完成后,返回执行步骤S201。

步骤S207:等待1秒钟,然后返回执行步骤S201。

图3是根据本发明优选实施例的从REDIS队列中取数据处理的流程图。如图3所示,主要包括以下步骤:

步骤S301:提取REDIS队列中的数据(逐条处理)

步骤S303:判断该REDIS队列中的数据是否为空,如果是,执行步骤S305,否则,返回执行步骤S309。

步骤S305:如队列中有数据ID取出,根据队列ID,从哈希表中取出待处理的数据内容。

步骤S307:按照业务需求处理取出的数据,完成后返回执行步骤S301。

步骤S309:如队列中无数据,进程等待1秒,返回执行步骤S301,即再次尝试读取REDIS队列数据。

图4是根据本发明实施例的队列处理装置的结构框图。如图4所示,该队列处理装置包括:第一判断模块40,用于判断REDIS队列中当前总数据量;第一处理模块42,用于在上述总数据量大于或等于预定阈值时,等待第一预定时长之后,重新判断REDIS队列中的总数据量;第二处理模块44,用于在上述总数据量小于预定阈值时,从数据库队列表中提取数据,填充到REDIS队列中。

当REDIS队列中当前总数数据量大于或等于预定阈值,则第一处理模块42等待第一预定时长之后,之后重新判断REDIS队列中的总数据量;当REDIS队列中当前总数据量小于预定阈值时,第二处理模块44从数据库队列表中提取预定数量的数据,填充到REDIS队列中。采用该装置可以控制REDIS内存中的临时数据量,不会发生大量数据涌入内存导致溢出的情况,同时有效的限制了与数据库的IO频率。

优选地,如图5所示,上述第二处理模块44可以进一步包括:填充单元440,用于将数据库取出的数据,逐条填充到上述REDIS队列中,其中,将数据标识作为哈希表的键,将数据内容json串作为哈希表的值,一起保存到REDIS哈希表中。

优选地,如图5所示,上述装置还可以包括:第二判断模块46,用于在从上述REDIS队列提取数据时,判断上述REDIS队列是否为空;第一提取模块48,用于在上述REDIS队列为空时,等待第二预定时长之后,再次尝试提取上述REDIS队列中的数据;第二提取模块50,用于在上述REDIS队列不为空时,根据数据标识从哈希表中取出待处理的数据内容。

优选地,如图5所示,上述装置还可以包括:第三处理模块52,用于按照业务需求处理上述数据内容,返回执行从上述REDIS队列中提取下一条数据的步骤。

需要说明的是,上述队列处理装置中各个模块,各个单元相互结合实施的队列处理流程可以参见图1至图3的描述,此处不再赘述。

综上所述,借助本发明提供的上述实施例,一方面可以控制REDIS内存中的临时数据量,不会发生大量数据涌入内存导致溢出的情况,同时有效的限制了与数据库的IO频率,保证数据库运行稳定;另一方面,可以按需调配处理进程的数量,使得整个队列程序稳定高效,并且自由可控。

以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1