一种Redis内存队列中数据的获取方法及系统技术方案

技术编号:17047469 阅读:14 留言:0更新日期:2018-01-17 17:38
本发明专利技术涉及一种Redis内存队列中数据的获取方法及系统,包括:接收数据获取指令,数据获取指令包括Redis内存队列名称;根据数据获取指令,从内存队列中按照预设获取周期获取数据;当按照预设获取周期获取不到数据时,则进入休眠状态。本发明专利技术在确保Redis中某一内存队列中的业务数据能够在规定时间内被处理的条件下,减少对该内存队列的空调度,将获取数据的操作对象让给有数据且需要进行业务数据处理的Redis中的其他内存队列,在相同的硬件条件下提升了Redis的整体吞吐能力。

A method and system for data acquisition in Redis memory queue

The invention relates to a method and system for obtaining data, Redis memory queue includes: receiving data acquisition instruction, data acquisition instruction includes Redis memory queue name; according to the data obtained from the instruction memory queue according to the preset data acquisition cycle; when the preset acquisition period can not obtain the data, then enter a dormant state. The present invention in order to ensure the business data Redis in a memory in the queue can be handled within the prescribed time conditions, to reduce the memory queue of air conditioning, will get to the data object data and the need for additional memory queue service data processing in Redis, in the same hardware conditions improve the overall Redis throughput.

【技术实现步骤摘要】
一种Redis内存队列中数据的获取方法及系统
本专利技术涉及Redis数据调度
,特别涉及一种Redis内存队列中数据的获取方法及系统。
技术介绍
Redis是一个基于BSD许可开源的内存数据库,它可用作缓存、消息代理,并支持通过RedisCluster进行自动分区。通过Redis提供的消息代理机制,可以很方便的实现基于内存队列的速率控制。但是当内存队列数量持续增长,各个内存队列吞吐数据的速率不同,各内存队列处于繁忙、空闲状态不一,遍历Redis中的内存队列并从内存队列中获取数据会导致检查Redis内存队列中是否有数据的流量持续增加,导致需要进行业务数据处理的队列数据处理延迟成倍增加。
技术实现思路
本专利技术提供了一种Redis内存队列中数据的获取方法及系统,用以解决对Redis内存队列的空调度的问题,提升了Redis内存队列的整体吞吐能力。本专利技术解决上述技术问题的技术方案如下:一种Redis内存队列中数据的获取方法,包括以下步骤:步骤1、接收数据获取指令,所述数据获取指令包括Redis内存队列名称;步骤2、根据所述数据获取指令,从所述Redis内存队列名称对应的内存队列中按照预设获取周期获取数据;步骤3、当按照所述预设获取周期获取不到数据时,则进入休眠状态。本专利技术的有益效果是:本专利技术是将Redis中的内存队列进行空闲、繁忙标记并对获取数据的时间周期进行设置(即当接收到数据获取指令时,就按照预设获取周期开始连续获取数据,此为内存队列的繁忙状态,当按照预设获取周期获取不到数据时,则自动进入休眠状态,此为空闲标记),在确保Redis中某一内存队列中的业务数据能够在规定时间内被处理的条件下,减少对该内存队列的空调度,避免无用的内存队列中是否有数据的检查操作,将获取数据的操作对象让给有数据且需要进行业务数据处理的Redis中的其他内存队列,在相同的硬件条件下提升了Redis的整体吞吐能力。在上述技术方案的基础上,本专利技术还可以做如下改进。进一步,所述预设获取周期为多个,所述步骤2包括:步骤2.1、根据所述数据获取指令,按照第一预设获取周期连续从所述内存队列中获取数据;步骤2.2、当按照所述第一预设获取周期获取不到数据时,则按照第二预设获取周期获取数据;步骤2.3、当按照所述第二预设获取周期获取到数据时,则执行步骤2.1,否则,执行步骤3,其中,所述第一预设获取周期和所述第二预设获取周期分别为多个所述预设获取周期中不同的预设获取周期;则所述步骤3包括:当按照所述第二预设获取周期获取不到数据时,则进入休眠状态。本专利技术的进一步有益效果是:对获取数据的时间周期进行两级设置(即设置两个周期用于获取数据),当按照第一个周期获取不到数据时,则按照第二个周期获取数据,当按照第二个周期获取到数据时,则再以第一个周期获取数据,当按照第二个周期获取不到数据时,说明内存队列中没有数据,则进入休眠状态,避免了按照第一个周期和第二个周期对内存队列的连续多次空调度、浪费调度流量、降低Redis的整体吞吐能力等的问题。另外,设置两个周期,有利于对内存队列中的数据进行准确、彻底地调度,避免按照一个周期进行连续调度时因调度周期过短或调度周期单一而导致调度不到数据并造成对内存队列无数据的误判的问题。进一步,所述第一预设获取周期的时长短于所述第二预设获取周期的时长。本专利技术的进一步有益效果:先按照一个较短的获取周期从内存队列中连续获取数据,当按照这个较短的获取周期获取不到数据时,再拉长获取数据的等待周期,按照第二个获取周期去内存队列中获取数据,有利于对内存队列中的数据进行准确、彻底地获取,避免按照一个周期进行连续调度时因调度周期过短而导致调度不到数据并造成对内存队列无数据的误判的问题。进一步,所述步骤2.2具体包括:当按照所述第一预设获取周期连续m次获取不到数据时,则按照所述第二预设获取周期获取数据;所述步骤3具体包括:当按照所述第二预设获取周期连续n次获取不到数据时,则进入休眠状态;其中,m和n分别为正整数。本专利技术的进一步有益效果是:设置连续获取不到数据的次数限制,进一步避免按照第一个周期和第二个周期对内存队列的连续多次空调度、浪费调度流量、降低Redis的整体吞吐能力等的问题。进一步,所述方法还包括:步骤4、当按照所述第二预设获取周期获取数据的过程中,再次接收到所述数据获取指令时,则按照所述第二预设获取周期完成一次数据获取动作后,执行步骤2.1;或者,步骤5、当在休眠状态中,再次接收到所述数据获取指令,则执行步骤2.1。为解决本专利技术的技术问题,还提供了一种Redis内存队列中数据的获取系统,包括:指令接收模块,用于接收数据获取指令,所述数据获取指令包括Redis内存队列名称;所述数据获取模块,用于根据所述指令接收模块接收的所述数据获取指令,从所述Redis内存队列名称对应的内存队列中按照预设获取周期获取数据,当按照所述预设获取周期获取不到数据时,则进入休眠状态。进一步,所述预设获取周期为多个,所述数据获取模块具体用于:根据所述数据获取指令,按照第一预设获取周期连续从所述内存队列中获取数据;当按照所述第一预设获取周期获取不到数据时,则按照第二预设获取周期获取数据;当按照所述第二预设获取周期获取到数据时,则再次按照第一预设获取周期连续从所述内存队列中获取数据;当按照所述第二预设获取周期获取不到数据时,则进入休眠状态,其中,所述第一预设获取周期和所述第二预设获取周期分别为多个所述预设获取周期中不同的预设获取周期。进一步,所述数据获取模块中的所述第一预设获取周期的时长短于所述第二预设获取周期的时长。进一步,所述数据获取模块具体用于:当按照所述第一预设获取周期连续m次获取不到数据时,则按照所述第二预设获取周期获取数据;当按照所述第二预设获取周期连续n次获取不到数据时,则进入休眠状态,其中,m和n分别为正整数。进一步,所述指令接收模块还用于:当所述数据获取模块在按照所述第二预设获取周期获取数据的过程中,再次接收所述数据获取指令;所述数据获取模块还用于:当按照所述第二预设获取周期获取数据的过程中,根据所述指令接收模块再次接收的所述数据获取指令,按照所述第二预设获取周期完成一次数据获取动作后,按照所述第一预设获取周期连续从所述内存队列中获取数据;或者,当在休眠状态中,根据所述指令接收模块再次接收的所述数据获取指令,按照所述第一预设获取周期连续从所述内存队列中获取数据。本专利技术附加的方面的优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本专利技术实践了解到。附图说明图1为本专利技术一个实施例提供的一种Redis内存队列中数据的获取方法的流程示意图;图2为现有技术中的Redis内存队列中数据的获取方法的示意性框图;图3为本专利技术另一个实施例提供的一种Redis内存队列中数据的获取方法的流程示意图;图4为本专利技术另一个实施例提供的一种Redis内存队列中数据的获取方法的流程示意图;图5为本专利技术另一个实施例提供的一种Redis内存队列中数据的获取方法的流程示意图;图6为本专利技术另一个实施例提供的一种Redis内存队列中数据的获取方法的流程示意图;图7为本专利技术一个实施例提供的一种Redis内存队列中数据的获取系统的示意性框图。具体实施方式以下结合附图对本专利技术的原本文档来自技高网...
一种Redis内存队列中数据的获取方法及系统

【技术保护点】
一种Redis内存队列中数据的获取方法,其特征在于,包括:步骤1、接收数据获取指令,所述数据获取指令包括Redis内存队列名称;步骤2、根据所述数据获取指令,从所述Redis内存队列名称对应的内存队列中按照预设获取周期获取数据;步骤3、当按照所述预设获取周期获取不到数据时,则进入休眠状态。

【技术特征摘要】
1.一种Redis内存队列中数据的获取方法,其特征在于,包括:步骤1、接收数据获取指令,所述数据获取指令包括Redis内存队列名称;步骤2、根据所述数据获取指令,从所述Redis内存队列名称对应的内存队列中按照预设获取周期获取数据;步骤3、当按照所述预设获取周期获取不到数据时,则进入休眠状态。2.根据权利要求1所述的一种Redis内存队列中数据的获取方法,其特征在于,所述预设获取周期为多个,所述步骤2包括:步骤2.1、根据所述数据获取指令,按照第一预设获取周期连续从所述内存队列中获取数据;步骤2.2、当按照所述第一预设获取周期获取不到数据时,则按照第二预设获取周期获取数据;步骤2.3、当按照所述第二预设获取周期获取到数据时,则执行步骤2.1,否则,执行步骤3,其中,所述第一预设获取周期和所述第二预设获取周期分别为多个所述预设获取周期中不同的预设获取周期;则所述步骤3包括:当按照所述第二预设获取周期获取不到数据时,则进入休眠状态。3.根据权利要求2所述的一种Redis内存队列中数据的获取方法,其特征在于,所述第一预设获取周期的时长短于所述第二预设获取周期的时长。4.根据权利要求2或3所述的一种Redis内存队列中数据的获取方法,其特征在于,所述步骤2.2具体包括:当按照所述第一预设获取周期连续m次获取不到数据时,则按照所述第二预设获取周期获取数据;所述步骤3具体包括:当按照所述第二预设获取周期连续n次获取不到数据时,则进入休眠状态;其中,m和n分别为正整数。5.根据权利要求2或3所述的一种Redis内存队列中数据的获取方法,其特征在于,所述方法还包括:步骤4、当按照所述第二预设获取周期获取数据的过程中,再次接收到所述数据获取指令时,则按照所述第二预设获取周期完成一次数据获取动作后,执行步骤2.1;或者,步骤5、当在休眠状态中,再次接收到所述数据获取指令,则执行步骤2.1。6.一种Redis内存队列中数据的获取系统,其特征在于,包括:指令接收模块,用于接收数据获取指令,所述数据获取指令包...

【专利技术属性】
技术研发人员:姜益民童浩谢邵虎
申请(专利权)人:武汉光谷信息技术股份有限公司
类型:发明
国别省市:湖北,42

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

1