CN113326074B - 延时事件处理方法、装置、计算机设备和存储介质 - Google Patents
延时事件处理方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN113326074B CN113326074B CN202110738660.XA CN202110738660A CN113326074B CN 113326074 B CN113326074 B CN 113326074B CN 202110738660 A CN202110738660 A CN 202110738660A CN 113326074 B CN113326074 B CN 113326074B
- Authority
- CN
- China
- Prior art keywords
- memory
- time
- delay
- delay event
- time span
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4418—Suspend and resume; Hibernate and awake
Abstract
本申请涉及数据处理领域,提供了一种延时事件处理方法、装置、计算机设备和存储介质,获取延时事件,并获取延时事件的第一时间跨度;获取预设的第一存储器的第二时间跨度;比较第一时间跨度和第二时间跨度;若第一时间跨度小于等于第二时间跨度,将延时事件存储在第一存储器中;若第一时间跨度大于第二时间跨度,依次建立新的存储器,并根据第一时间跨度在新的存储器中进行存储;将存储在新的存储器中的所述延时事件进行迁移,直到迁移至第一存储器中;检测第一存储器中的延时事件是否到期;若到期,取出延时事件进行执行处理。通过本申请提供的延时事件处理方法、装置、计算机设备和存储介质,能够以较小的存储空间存储大量的延时事件。
Description
技术领域
本申请涉及数据处理的技术领域,特别涉及一种延时事件处理方法、装置、计算机设备和存储介质。
背景技术
日常开发中延时事件是比较常见的场景,以java语言为例,一般使用jdk自带的延时组件。这种延时组件发生改动时(添加一个延时事件或者删除一个延时事件)需要逐次遍历所有事件,时间复杂度是O(nlogn)级别的,而且在高并发事件、大数据量事件场景中,由于较大的延时、较高的内存占用,使得jdk自带的延时组件不满足要求。
发明内容
本申请的主要目的为提供一种延时事件处理方法、装置、计算机设备和存储介质,旨在解决无法处理第一时间跨度较大的延时事件的技术问题。
为实现上述目的,本申请提供了一种延时事件处理方法,包括以下步骤:
获取延时事件,并获取所述延时事件的到期时间与第一当前时间的距离,作为第一时间跨度;
获取预设的第一存储器所能存储的延时事件的第二时间跨度;所述第一存储器包括n个第一存储单元,n为大于等于1的整数,其中,n个所述第一存储单元将所述第一存储器分成n份用于存储不同时间子跨度的延时事件的存储空间,n份时间子跨度按照时序依次相连,且n份时间子跨度的和等于所述第二时间跨度;
比较所述第一时间跨度和所述第二时间跨度;
若所述第一时间跨度小于等于所述第二时间跨度,根据所述第一时间跨度在所述第一存储器中确定对应的第一存储单元进行存储;
若所述第一时间跨度大于所述第二时间跨度,依次建立新的存储器,并根据所述第一时间跨度在新的存储器中确定对应的存储单元进行存储;其中,所述新的存储器的存储单元的时间子跨度与相邻的上一个所述存储器的时间跨度相同,所述新的存储器包括n个存储单元;
根据所述延时事件的到期时间将存储在新的存储器中的所述延时事件沿新的存储器建立的顺序依次向上一个存储器迁移,直到将所述延时事件迁移至所述第一存储器中;
检测所述第一存储器中的所述延时事件是否到期;
若到期,取出所述延时事件进行执行处理。
进一步地,所述根据所述延时事件的到期时间将存储在新的存储器中的所述延时事件沿新的存储器建立的顺序依次向上一个存储器迁移的步骤之前,包括:
将存储在同一个存储单元的所述延时事件按照各自的到期时间的时序进行排列;
将存储在同一存储单元的所述延时事件根据所述排列生成对应的延时事件列表,将所述存储单元的到期时间作为对应的所述延时事件列表的到期时间。
进一步地,所述根据所述延时事件的到期时间将存储在新的存储器中的所述延时事件沿新的存储器建立的顺序依次向上一个存储器迁移的步骤,包括:
获取所述延时事件所在的所述延时事件列表的到期时间;
获取第二当前时间,将所述第二当前时间与所述延时事件列表的到期时间进行比较;
若所述第二当前时间与所述延时事件列表的到期时间相同,将所述延时事件沿新的存储器建立的顺序依次迁移至上一个所述存储器对应的存储单元中。
进一步地,所述根据所述延时事件的到期时间将存储在新的存储器中的所述延时事件沿新的存储器建立的顺序依次向上一个存储器迁移的步骤,包括:
获取所述延时事件列表的到期时间和第三当前时间;
将所述延时事件列表的到期时间与所述第三当前时间进行比较;
若所述延时事件列表的到期时间与所述第三当前时间相同,将所述延时事件列表中的所有延时事件沿新的存储器建立的顺序依次向上一个存储器迁移。
进一步地,所述依次建立新的存储器的步骤,包括:
根据所述第一时间跨度和所述第二时间跨度确定所述新的存储器的个数;
根据所述个数依次建立所述新的存储器。
进一步地,所述检测所述第一存储器中的所述延时事件是否到期的步骤之前,包括:
根据所述第二时间跨度确定各个所述第一存储单元的时间子跨度;
将所述延时事件在时间每推进一个所述第一存储单元的时间子跨度时沿所述第一存储单元连接的顺序向上一个所述第一存储单元迁移。
进一步地,所述取出所述延时事件进行执行处理的步骤之后,包括:
检测各个所述存储器中是否存储有所述延时事件;
若所述存储器中未存储有所述延时事件,检测所述存储器之后的所有存储器是否存储有延时事件;
若所述存储器之后的所有存储器中未存储有延时事件,删除所述存储器及所述存储器之后的所有存储器。
本申请还提供一种延时事件处理装置,包括:
第一获取单元,用于获取延时事件,并获取所述延时事件的到期时间与第一当前时间的距离,作为第一时间跨度;
第二获取单元,用于获取预设的第一存储器所能存储的延时事件的第二时间跨度;所述第一存储器包括n个第一存储单元,n为大于等于1的整数,其中,n个所述第一存储单元将所述第一存储器分成n份用于存储不同时间子跨度的延时事件的存储空间,n份时间子跨度按照时序依次相连,且n份时间子跨度的和等于所述第二时间跨度;
比较单元,用于比较所述第一时间跨度和所述第二时间跨度;
第一确定单元,用于若所述第一时间跨度小于等于所述第二时间跨度,根据所述第一时间跨度在所述第一存储器中确定对应的第一存储单元进行存储;
建立单元,用于若所述第一时间跨度大于所述第二时间跨度,依次建立新的存储器,并根据所述第一时间跨度在新的存储器中确定对应的存储单元进行存储;其中,所述新的存储器的存储单元的时间子跨度与相邻的上一个所述存储器的时间跨度相同,所述新的存储器包括n个存储单元;
迁移单元,用于根据所述延时事件的到期时间将存储在新的存储器中的所述延时事件沿新的存储器建立的顺序依次向上一个存储器迁移,直到将所述延时事件迁移至所述第一存储器中;
检测单元,用于检测所述第一存储器中的所述延时事件是否到期;
执行单元,用于若到期,取出所述延时事件进行执行处理。
本申请还提供一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述的延时事件处理方法的步骤。
本申请还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的延时事件处理方法的步骤。
本申请提供的延时事件处理方法、装置、计算机设备和存储介质,根据延时事件的第一时间跨度去确定预设的第一存储器能否存储该延时事件,不能存储时,会依次建立新的存储器,新建立的存储器的存储单元的时间子跨度复用前一个储存器的时间跨度,能够以较小的存储空间存储大量的延时事件,延时事件会根据到期时间进行迁移,无需遍历所有存储器。
附图说明
图1是本申请一实施例中延时事件处理方法步骤示意图;
图2是本申请一实施例中延时事件处理装置结构框图;
图3为本申请一实施例的计算机设备的结构示意框图。
本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
参照图1,本申请一实施例提供了一种延时事件处理方法,包括以下步骤:
步骤S1,获取延时事件,并获取所述延时事件的到期时间与第一当前时间的距离,作为第一时间跨度;
步骤S2,获取预设的第一存储器所能存储的延时事件的第二时间跨度;所述第一存储器包括n个第一存储单元,n为大于等于1的整数,其中,n个所述第一存储单元将所述第一存储器分成n份用于存储不同时间子跨度的延时事件的存储空间,n份时间子跨度按照时序依次相连,且n份时间子跨度的和等于所述第二时间跨度;
步骤S3,比较所述第一时间跨度和所述第二时间跨度;
步骤S4,若所述第一时间跨度小于等于所述第二时间跨度,根据所述第一时间跨度在所述第一存储器中确定对应的第一存储单元进行存储;
步骤S5,若所述第一时间跨度大于所述第二时间跨度,依次建立新的存储器,并根据所述第一时间跨度在新的存储器中确定对应的存储单元进行存储;其中,所述新的存储器的存储单元的时间子跨度与相邻的上一个所述存储器的时间跨度相同,所述新的存储器包括n个存储单元;
步骤S6,根据所述延时事件的到期时间将存储在新的存储器中的所述延时事件沿新的存储器建立的顺序依次向上一个存储器迁移,直到将所述延时事件迁移至所述第一存储器中;
步骤S7,检测所述第一存储器中的所述延时事件是否到期;
步骤S8,若到期,取出所述延时事件进行执行处理。
本实施例中,如上述步骤S1所述,延时事件又称定时事件,即到达指定时间点后才会执行该事件,当获取到延时事件后,获取它的第一时间跨度,即该延时事件到期的时间距离当前时间的时间间隔。
如上述步骤S2所述,预先建立有一个第一存储器,该第一存储器是由n个存储单元组成的闭合结构,每个第一存储单元的时间子跨度是t,则第一存储器横跨的第二时间跨度为interval=n*t,上述n和t具体数值可根据需要进行调节。如果T是第一当前时间,则整个第一存储器能够存储的延时事件的时间范围是:[T,T+interval]。
如上述步骤S3-S4所述,将第一时间跨度和第二时间跨度进行比较,确定第一存储器是否可以存储该延时事件,当第一时间跨度小于等于第二时间跨度,则在第一存储器中确定该延时事件所对应的存储单元,如当n为5时,在某个时刻T,当前时间停留在第1个存储单元上,此时有一个4t的延时事件到来(相对于与当前时间的延时跨度4t),从现在算起,第5个存储单元存储它,经过4t时间延时事件才到期),此时可以得出:这个延时事件应该存储到第1+4t/t=5个存储单元上。经过4t时间后,这个存储单元的延时事件将会到期。此刻第一时间跨度为n*t的延时事件会存储到第一存储器中最后一个第一存储单元,只有超过了第一存储器的最大值才会创建新的存储器。
如上述步骤S5所述,当第一时间跨度大于第二时间跨度时,第一存储器无法存储该延时事件,此时依次建立新的存储器,新的存储器按照第二存储器、第三存储器等依次命名,对应的存储单元以第二存储单元、第三存储单元等依次命名,新建的第二存储器中的每个第二存储单元的时间子跨度与第一存储器整个的时间跨度(即第二时间跨度)相等,第二存储器中的第二存储单元复用了第一存储器的时间刻度,相应的后续第三存储器中的第三存储单元复用了第二存储器的时间刻度,如第一存储器的第一存储单元的时间子跨度为t、第一存储器的时间跨度为n*t,那么第二存储器的第二存储单元的时间子跨度为n*t、第二存储器的时间跨度为n*(n*t),第三存储器的第三存储单元的时间子跨度为n*(n*t)、第三存储器的时间跨度n*(n*(n*t)),依次类推。通过新的存储器的每个存储单元复用相邻的上一个存储器的时间跨度,所以能够以较小的存储空间存储大量的延时事件。新的存储器的存储单元个数与第一存储器的存储单元个数相同,这样只要调整第一存储器的大小就可以影响到后面新建的存储器。在其他实施例中,建立的新的存储器的存储单元个数与第一存储器的存储单元个数可以不同。根据第一时间跨度确定新的存储器及对应的存储单元,进而存储进该存储单元。如此时有一个第一时间跨度为(n+1)*t的延时事件到来,由于第一存储器的时间跨度为n*t,新建立的第二存储器的第一个第二存储单元的时间子跨度为nt,因此,第一时间跨度为(n+1)*t的延时事件应存储在第二存储器的第二个存储单元,即:(n+1)*t–n*t=t<n*t。同理(n+2)*t延时的事件也在第二存储器第二个存储单元里。
如上述步骤S6-S8所述,随着时间的推进,检测延时事件的到期时间,具体的,可通过调度器扫描每个存储单元,检测延时事件的到期时间,根据各个延时事件的到期时间依次向相邻的上一个进行迁移,如延时事件存储在第八存储中,满足迁移要求时,向第七存储器迁移,再满足迁移要求时,向第六存储器迁移,即一个存储器一个存储器的向前迁移,直到将延时事件迁移到第一存储器中,在第一存储器中检测存储在其中的延时事件是否到期,若到期,将该延时事件从第一存储器中取出执行。
本实施例中,通过后一个存储器的存储单元的时间子跨度复用相邻的上一个储存器的时间跨度,能够以较小的存储空间存储大量的延时事件,延时事件会根据到期时间向前进行迁移,直至迁移到第一存储器中,无需遍历所有存储器。
在一实施例中,所述根据所述延时事件的到期时间将存储在新的存储器中的所述延时事件沿新的存储器建立的顺序依次向上一个存储器迁移的步骤S6之前,包括:
步骤S6a,将存储在同一个存储单元的所述延时事件按照各自的到期时间的时序进行排列;
步骤S6b,将存储在同一存储单元的所述延时事件根据所述排列生成对应的延时事件列表,将所述存储单元的到期时间作为对应的所述延时事件列表的到期时间。
本实施例中,在高并发事件、大数据量事件场景中,每个存储单元会存储有多个延时事件,将每个存储单元中所存储的延时事件按照各自的到期时间的时序进行排列,同一个存储单元的延时事件生成一个延时事件列表,一个延时事件列表对应一个存储单元,未存储延时事件的存储单元无需生成延时事件列表,每个延时事件列表按照过期时间的时序排列,这样延时事件列表过期时间到来时,位于第一顺位的延时事件可以直接取出进行相应的处理,如迁移或执行。具体的,延时事件列表的到期时间与所对应存储单元的到期时间相同,如前述的第二存储器的第二存储单元存储的时间范围为[nt,2nt],则第二存储器的第二存储单元对应的延时事件列表的到期时间为nt,当前时间来到nt时,需要将延时事件迁移到前一个存储器,直接将整个延时列表中的延时事件迁移至第一存储器,由于第二存储器中的第二存储单元的时间子跨度复用了第一存储器的时间跨度,第二存储单元中的各个延时事件都能在第一存储器中确定相应的第一存储单元,延时事件迁移到第一存储器后,重新去检测各自的到期时间。到期的时候需要计算延时事件列表里的延时事件剩余时间,到期则执行,否则继续计算要存储的存储器、存储单元位置。到期了的存储单元对应的延时事件列表会清空,用来存储新的延时事件,重复利用。
在一实施例中,所述根据所述延时事件的到期时间将存储在新的存储器中的所述延时事件沿新的存储器建立的顺序依次向上一个存储器迁移的步骤S6,包括:
步骤S61,获取所述延时事件所在的所述延时事件列表的到期时间;
步骤S62,获取第二当前时间,将所述第二当前时间与所述延时事件列表的到期时间进行比较;
步骤S63,若所述第二当前时间与所述延时事件列表的到期时间相同,将所述延时事件沿新的存储器建立的顺序依次迁移至上一个所述存储器对应的存储单元中。
本实施例中,如上述步骤S61-S62所述,检测延时事件是否存储在第一存储器中,若未存储在,表明该延时事件的第一时间跨度较大。每个存储单元可以存储多个延时事件,各个存储单元的多个延时事件可组成一个延时事件列表。每个延时事件本身是有到期时间的,同时整个延时事件列表也有一个到期时间(延时事件总是存储在[T,T+t]之间,T是某个时刻,t是存储单元时间刻度,那么这个存储单元里的事件列表会在T时刻到期)。获取该延时事件所在的延时事件列表的到期时间,延时事件列表的到期时间即为该延时事件所在的存储单元的到期时间,随着时间的推进,第二当前时间即将会到达到期时间,将第二当前时间与所述到期时间进行比较确定第二当前时间是否到达到期时间。
如上述步骤S63所述,若到达到期时间,表明该延时事件还剩本身的到期时间减去延时事件列表的到期时间的时间间隔到期,由于相邻的两个存储器中的后一个存储器的存储单元的时间子跨度复用前一个存储器的时间跨度,即前一个存储器时间经过一个interval,后一个存储器时间推进一个存储单元的时间子跨度,以此交替的向前推进,即第一存储器的时间过去一个第一时间跨度对应着第二个存储器过去一个第二存储单元的时间子跨度。因此,剩余上述时间间隔到期的延时事件可以迁移到前一个存储器中。
如当时间来到n*t,此时第二存储器第二个存储单元里的多个延时事件还未达到到期时间,比如(n+1)*t、(n+2)*t,他们还需要分别等待t、2t的时间才执行。此时将这些延时事件下放到前一个存储器(即第一存储器)中,直接从列表中将它们取出放入到前一个存储器对应的存储单元去,从到期的延时事件列表里取出延时事件,根据剩余延时事件来寻找能够落入的存储单元。假定第一存储器每个第一存储单元的时间子跨度为1s、第一存储单元个数为5,那么第二存储器每个第二存储单元的时间子跨度为5s,第二存储单元个数为5,第二存储器的第三时间跨度为25s,第一时间跨度为17.5s的延时事件存储于第二存储器的第四个第二存储单元上,若此刻时间停留在第二存储器的第三存储单元起点10s上,再过5s第四个第二存储单元的延时事件列表过期,当时间来到15s时,将第四个第二存储单元中的延时事件列表的延时事件迁移到第一存储器中的第三个第一存储单元,以此时时间重新作为当前时间,此时该延时事件还有2.5s到期,继续等待过期时间到来。
本实施例中,延时事件会随着时间的推进向前迁移,因此只需要有一个线程去推进时间轮就可以工作了,即有一个线程负责推进时间,延时事件会借助存储器依次存储,等到过期时间到来,进行前述的处理,这样就可以完成了延时存储、超时调度。
在一实施例中,所述根据所述延时事件的到期时间将存储在新的存储器中的所述延时事件沿新的存储器建立的顺序依次向上一个存储器迁移的步骤S6,包括:
步骤S601,获取所述延时事件列表的到期时间和第三当前时间;
步骤S602,将所述延时事件列表的到期时间与所述第三当前时间进行比较;
步骤S603,若所述延时事件列表的到期时间与所述第三当前时间相同,将所述延时事件列表中的所有延时事件沿新的存储器建立的顺序依次向上一个存储器迁移。
本实施例中,获取各个延时事件列表的到期时间和第三当前时间并进行比较,第三当前时间即为获取各个延时列表的到期时间时的时间,确定延时事件列表是否到期,到期时,将整个延时事件列表的所有延时事件迁移到前一个存储器中,无需单个延时事件进行迁移,迁移完成后删除该延时事件列表,迁移至前一个存储器的所有延时事件会形成一个新的延时事件列表。
在一实施例中,所述依次建立新的存储器的步骤S5,包括:
步骤S51,根据所述第一时间跨度和所述第二时间跨度确定所述新的存储器的个数;
步骤S52,根据所述个数依次建立所述新的存储器。
本实施例中,建立的新的存储器的存储单元的时间子跨度与前一存储器的时间跨度相同,且各个存储器的个数相同,由此可知,依次建立的新的存储器的时间跨度呈等比数列增长,其中,首项a1则为第一存储器的第二时间跨度nt,公比q为存储单元个数n,通过公式Sx=nxt,其中x为存储器的个数,当第一时间跨度小于Sx时,即可确定总的存储器的个数,通过确定新的存储器的个数再建立新的存储器,能够有效避免建立的新的存储器过多导致浪费空间,或新的存储器过少导致延时事件无法存储。
在一实施例中,所述检测所述第一存储器中的所述延时事件是否到期的步骤S7之前,包括:
步骤S7A,根据所述第二时间跨度确定各个所述第一存储单元的时间子跨度;
步骤S7B,将所述延时事件在时间每推进一个所述第一存储单元的时间子跨度时沿所述第一存储单元连接的顺序向上一个所述第一存储单元迁移。
本实施例中,通过用第二时间跨度除以第一存储单元个数N即可得到各个第一存储单元的时间子跨度,延时事件按照一个存储单元一个存储单元的进行迁移,随着时间的推进,到期时,直接在第一存储器的第一个第一存储单元就可以直接取出执行。
在一实施例中,所述取出所述延时事件进行执行处理的步骤S8之后,包括:
步骤S8A,检测各个所述存储器中是否存储有所述延时事件;
步骤S8B,所述存储器中未存储有所述延时事件,检测所述存储器之后的所有存储器是否存储有延时事件;
步骤S8C,若所述存储器之后的所有存储器中未存储有延时事件,删除所述存储器及所述存储器之后的所有存储器。
本实施例中,当存在一个第一时间跨度较大的延时事件时,会依次建立多个存储器,但当该延时事件到期后,若没有新的大时间跨度的延时事件到来,新建立的存储器会空置,占用空间,检测各个存储器中是否存储有延时事件,当检测到一个存储器未存储延时事件时,还要检测该存储器之后的那些存储器中是否存储有延时事件,当该存储及之后的存储器均未存储有延时事件时,删除该存储及之后的存储器,避免仅删除其中一个存储器,导致存储在之后的存储器中的延时事件在无法向前迁移。
参见图2,本申请一实施例提供了一种延时事件处理装置,包括:
第一获取单元10,用于获取延时事件,并获取所述延时事件的到期时间与第一当前时间的距离,作为第一时间跨度;
第二获取单元20,用于获取预设的第一存储器所能存储的延时事件的第二时间跨度;所述第一存储器包括n个第一存储单元,n为大于等于1的整数,其中,n个所述第一存储单元将所述第一存储器分成n份用于存储不同时间子跨度的延时事件的存储空间,n份时间子跨度按照时序依次相连,且n份时间子跨度的和等于所述第二时间跨度;
比较单元30,用于比较所述第一时间跨度和所述第二时间跨度;
第一确定单元40,用于若所述第一时间跨度小于等于所述第二时间跨度,根据所述第一时间跨度在所述第一存储器中确定对应的第一存储单元进行存储;
建立单元50,用于若所述第一时间跨度大于所述第二时间跨度,依次建立新的存储器,并根据所述第一时间跨度在新的存储器中确定对应的存储单元进行存储;其中,所述新的存储器的存储单元的时间子跨度与相邻的上一个所述存储器的时间跨度相同,所述新的存储器包括n个存储单元;
迁移单元60,用于根据所述延时事件的到期时间将存储在新的存储器中的所述延时事件沿新的存储器建立的顺序依次向上一个存储器迁移,直到将所述延时事件迁移至所述第一存储器中;
检测单元70,用于检测所述第一存储器中的所述延时事件是否到期;
执行单元80,用于若到期,取出所述延时事件进行执行处理。
在一实施例中,所述延时事件处理装置,还包括:
排列单元,用于将存储在同一个存储单元的所述延时事件按照各自的到期时间的时序进行排列;
生成单元,用于将存储在同一存储单元的所述延时事件根据所述排列生成对应的延时事件列表,将所述存储单元的到期时间作为对应的所述延时事件列表的到期时间。
在一实施例中,所述迁移单元60,包括:
第一获取子单元,用于获取所述延时事件所在的所述延时事件列表的到期时间;
第二获取子单元,用于获取第二当前时间,将所述第二当前时间与所述延时事件列表的到期时间进行比较;
第一迁移子单元,用于若所述第二当前时间与所述延时事件列表的到期时间相同,将所述延时事件沿新的存储器建立的顺序依次迁移至上一个所述存储器对应的存储单元中。
在一实施例中,所述迁移单元60,包括:
第三获取子单元,用于获取所述延时事件列表的到期时间和第三当前时间;
比较子单元,用于将所述延时事件列表的到期时间与所述第三当前时间进行比较;
第二迁移子单元,用于若所述延时事件列表的到期时间与所述第三当前时间相同,将所述延时事件列表中的所有延时事件沿新的存储器建立的顺序依次向上一个存储器迁移。
在一实施例中,所述建立单元50,包括:
确定子单元,用于根据所述第一时间跨度和所述第二时间跨度确定所述新的存储器的个数;
建立子单元,用于根据所述个数依次建立所述新的存储器。
在一实施例中,所述延时事件处理装置,还包括:
第二确定单元,用于根据所述第二时间跨度确定各个所述第一存储单元的时间子跨度;
第二迁移单元,用于将所述延时事件在时间每推进一个所述第一存储单元的时间子跨度时向沿所述第一存储单元连接的顺序向上一个所述第一存储单元迁移。
在一实施例中,所述延时事件处理装置,还包括:
第一检测单元,用于检测各个所述存储器中是否存储有所述延时事件;
第二检测单元,用于若所述存储器中未存储有所述延时事件,检测所述存储器之后的所有存储器是否存储有延时事件;
删除单元,用于若所述存储器之后的所有存储器中未存储有延时事件,删除所述存储器及所述存储器之后的所有存储器。
在本实施例中,上述各个单元、子单元的具体实现请参照上述方法实施例中所述,在此不再进行赘述。
参照图3,本申请实施例中还提供一种计算机设备,该计算机设备可以是服务器,其内部结构可以如图3所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设计的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据等。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种延时事件处理方法。
本领域技术人员可以理解,图3中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定。
本申请一实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现一种延时事件处理方法。
综上所述,为本申请实施例中提供的延时事件处理方法、装置、计算机设备和存储介质,获取延时事件,并获取所述延时事件的到期时间与第一当前时间的距离,作为第一时间跨度;获取预设的第一存储器所能存储的延时事件的第二时间跨度;所述第一存储器包括n个第一存储单元,n为大于等于1的整数,其中,n个所述第一存储单元将所述第一存储器分成n份用于存储不同时间子跨度的延时事件的存储空间,n份时间子跨度按照时序依次相连,且n份时间子跨度的和等于所述第二时间跨度;比较所述第一时间跨度和所述第二时间跨度;若所述第一时间跨度小于等于所述第二时间跨度,根据所述第一时间跨度在所述第一存储器中确定对应的第一存储单元进行存储;若所述第一时间跨度大于所述第二时间跨度,依次建立新的存储器,并根据所述第一时间跨度在新的存储器中确定对应的存储单元进行存储;其中,所述新的存储器的存储单元的时间子跨度与相邻的上一个所述存储器的时间跨度相同,所述新的存储器包括n个存储单元;根据所述延时事件的到期时间将存储在新的存储器中的所述延时事件沿新的存储器建立的顺序依次向上一个存储器迁移,直到将所述延时事件迁移至所述第一存储器中;检测所述第一存储器中的所述延时事件是否到期;若到期,取出所述延时事件进行执行处理本申请中,通过后一个存储器的存储单元的时间子跨度复用前一个储存器的时间跨度,能够以较小的存储空间存储大量的延时事件,延时事件会根据到期时间向前进行迁移,无需遍历所有存储器。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储与一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的和实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM通过多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双速据率SDRAM(SSRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
以上所述仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (10)
1.一种延时事件处理方法,其特征在于,包括以下步骤:
获取延时事件,并获取所述延时事件的到期时间与第一当前时间的距离,作为第一时间跨度;
获取预设的第一存储器所能存储的延时事件的第二时间跨度;所述第一存储器包括n个第一存储单元,n为大于等于1的整数,其中,n个所述第一存储单元将所述第一存储器分成n份用于存储不同时间子跨度的延时事件的存储空间,n份时间子跨度按照时序依次相连,且n份时间子跨度的和等于所述第二时间跨度;
比较所述第一时间跨度和所述第二时间跨度;
若所述第一时间跨度小于等于所述第二时间跨度,根据所述第一时间跨度在所述第一存储器中确定对应的第一存储单元进行存储;
若所述第一时间跨度大于所述第二时间跨度,依次建立新的存储器,并根据所述第一时间跨度在新的存储器中确定对应的存储单元进行存储;其中,所述新的存储器的存储单元的时间子跨度与相邻的上一个存储器的时间跨度相同,所述新的存储器包括n个存储单元;
根据所述延时事件的到期时间将存储在新的存储器中的所述延时事件沿新的存储器建立的顺序依次向上一个存储器迁移,直到将所述延时事件迁移至所述第一存储器中;
检测所述第一存储器中的所述延时事件是否到期;
若到期,取出所述延时事件进行执行处理。
2.根据权利要求1所述的延时事件处理方法,其特征在于,所述根据所述延时事件的到期时间将存储在新的存储器中的所述延时事件沿新的存储器建立的顺序依次向上一个存储器迁移的步骤之前,包括:
将存储在同一个存储单元的所述延时事件按照各自的到期时间的时序进行排列;
将存储在同一存储单元的所述延时事件根据所述排列生成对应的延时事件列表,将所述存储单元的到期时间作为对应的所述延时事件列表的到期时间。
3.根据权利要求2所述的延时事件处理方法,其特征在于,所述根据所述延时事件的到期时间将存储在新的存储器中的所述延时事件沿新的存储器建立的顺序依次向上一个存储器迁移的步骤,包括:
获取所述延时事件所在的所述延时事件列表的到期时间;
获取第二当前时间,将所述第二当前时间与所述延时事件列表的到期时间进行比较;
若所述第二当前时间与所述延时事件列表的到期时间相同,将所述延时事件沿新的存储器建立的顺序依次迁移至上一个所述存储器对应的存储单元中。
4.根据权利要求2所述的延时事件处理方法,其特征在于,所述根据所述延时事件的到期时间将存储在新的存储器中的所述延时事件沿新的存储器建立的顺序依次向上一个存储器迁移的步骤,包括:
获取所述延时事件列表的到期时间和第三当前时间;
将所述延时事件列表的到期时间与所述第三当前时间进行比较;
若所述延时事件列表的到期时间与所述第三当前时间相同,将所述延时事件列表中的所有延时事件沿新的存储器建立的顺序依次向上一个存储器迁移。
5.根据权利要求1所述的延时事件处理方法,其特征在于,所述依次建立新的存储器的步骤,包括:
根据所述第一时间跨度和所述第二时间跨度确定所述新的存储器的个数;
根据所述个数依次建立所述新的存储器。
6.根据权利要求1所述的延时事件处理方法,其特征在于,所述检测所述第一存储器中的所述延时事件是否到期的步骤之前,包括:
根据所述第二时间跨度确定各个所述第一存储单元的时间子跨度;
将所述延时事件在时间每推进一个所述第一存储单元的时间子跨度时沿所述第一存储单元连接的顺序向上一个所述第一存储单元迁移。
7.根据权利要求1所述的延时事件处理方法,其特征在于,所述取出所述延时事件进行执行处理的步骤之后,包括:
检测各个所述存储器中是否存储有所述延时事件;
若所述存储器中未存储有所述延时事件,检测所述存储器之后的所有存储器是否存储有延时事件;
若所述存储器之后的所有存储器中未存储有延时事件,删除所述存储器及所述存储器之后的所有存储器。
8.一种延时事件处理装置,其特征在于,包括:
第一获取单元,用于获取延时事件,并获取所述延时事件的到期时间距与第一当前时间的距离,作为第一时间跨度;
第二获取单元,用于获取预设的第一存储器所能存储的延时事件的第二时间跨度;所述第一存储器包括n个第一存储单元,n为大于等于1的整数,其中,n个所述第一存储单元将所述第一存储器分成n份用于存储不同时间子跨度的延时事件的存储空间,n份时间子跨度按照时序依次相连,且n份时间子跨度的和等于所述第二时间跨度;
比较单元,用于比较所述第一时间跨度和所述第二时间跨度;
第一确定单元,用于若所述第一时间跨度小于等于所述第二时间跨度,根据所述第一时间跨度在所述第一存储器中确定对应的第一存储单元进行存储;
建立单元,用于若所述第一时间跨度大于所述第二时间跨度,依次建立新的存储器,并根据所述第一时间跨度在新的存储器中确定对应的存储单元进行存储;其中,所述新的存储器的存储单元的时间子跨度与相邻的上一个存储器的时间跨度相同,所述新的存储器包括n个存储单元;
迁移单元,用于根据所述延时事件的到期时间将存储在新的存储器中的所述延时事件沿新的存储器建立的顺序依次向上一个存储器迁移,直到将所述延时事件迁移至所述第一存储器中;
检测单元,用于检测所述第一存储器中的所述延时事件是否到期;
执行单元,用于若到期,取出所述延时事件进行执行处理。
9.一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的延时事件处理方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的延时事件处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110738660.XA CN113326074B (zh) | 2021-06-30 | 2021-06-30 | 延时事件处理方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110738660.XA CN113326074B (zh) | 2021-06-30 | 2021-06-30 | 延时事件处理方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113326074A CN113326074A (zh) | 2021-08-31 |
CN113326074B true CN113326074B (zh) | 2022-04-15 |
Family
ID=77425249
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110738660.XA Active CN113326074B (zh) | 2021-06-30 | 2021-06-30 | 延时事件处理方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113326074B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109871266A (zh) * | 2018-12-15 | 2019-06-11 | 中国平安人寿保险股份有限公司 | 任务延时处理方法、装置、计算机装置及存储介质 |
CN110636130A (zh) * | 2019-09-23 | 2019-12-31 | 上海钧正网络科技有限公司 | 延时消息处理方法、装置、计算机设备和存储介质 |
CN111008188A (zh) * | 2019-10-29 | 2020-04-14 | 平安科技(深圳)有限公司 | 数据迁移方法、装置、计算机设备和存储介质 |
CN112104519A (zh) * | 2020-08-06 | 2020-12-18 | 北京健康之家科技有限公司 | 延迟消息的投递方法及装置、存储介质、计算机设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8127099B2 (en) * | 2006-12-26 | 2012-02-28 | International Business Machines Corporation | Resource recovery using borrowed blocks of memory |
-
2021
- 2021-06-30 CN CN202110738660.XA patent/CN113326074B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109871266A (zh) * | 2018-12-15 | 2019-06-11 | 中国平安人寿保险股份有限公司 | 任务延时处理方法、装置、计算机装置及存储介质 |
CN110636130A (zh) * | 2019-09-23 | 2019-12-31 | 上海钧正网络科技有限公司 | 延时消息处理方法、装置、计算机设备和存储介质 |
CN111008188A (zh) * | 2019-10-29 | 2020-04-14 | 平安科技(深圳)有限公司 | 数据迁移方法、装置、计算机设备和存储介质 |
CN112104519A (zh) * | 2020-08-06 | 2020-12-18 | 北京健康之家科技有限公司 | 延迟消息的投递方法及装置、存储介质、计算机设备 |
Non-Patent Citations (1)
Title |
---|
一个基于日志结构的非易失性内存键值存储系统;游理通 等;《计算机研究与发展》;20180915(第09期);第2038-2049页 * |
Also Published As
Publication number | Publication date |
---|---|
CN113326074A (zh) | 2021-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110569123B (zh) | 线程分配方法、装置、计算机设备和存储介质 | |
CN108573305B (zh) | 一种数据处理方法、设备及装置 | |
CN110262883B (zh) | 基于定时器的任务处理方法、装置及电子设备 | |
CN109992307B (zh) | 指令列表调度方法、装置、计算机设备及存储介质 | |
CN110213392B (zh) | 数据分发方法、装置、计算机设备和存储介质 | |
CN110866610A (zh) | 一种深度学习模型分布式运算的方法及装置 | |
CN112990488B (zh) | 一种基于机器异构性的联邦学习方法 | |
CN113326074B (zh) | 延时事件处理方法、装置、计算机设备和存储介质 | |
CN108363786A (zh) | 加载数据的方法、装置、计算机设备和存储介质 | |
CN109587220A (zh) | 负载均衡方法、装置、计算机设备和存储介质 | |
CN110795171A (zh) | 业务数据处理方法、装置、计算机设备及存储介质 | |
CN107766528B (zh) | 瀑布流页面的数据加载方法、终端和计算机可读存储介质 | |
CN113282354B (zh) | 应用程序的h5页面加载方法、装置、设备及存储介质 | |
CN114510536A (zh) | 数据校验方法、装置、计算机设备及存储介质 | |
CN111177605B (zh) | 单页面的加载性能监控方法、装置及相关设备 | |
CN112596820A (zh) | 一种资源加载方法、装置、设备以及存储介质 | |
CN112732819A (zh) | 基于etl的数据处理方法、装置、设备和存储介质 | |
CN111026988A (zh) | 一种页面加载的方法、装置、系统及计算机设备 | |
CN112286704B (zh) | 延时任务的处理方法、装置、计算机设备及存储介质 | |
CN110209509B (zh) | 多核处理器间的数据同步方法及装置 | |
CN112818021A (zh) | 数据请求处理方法、装置、计算机设备和存储介质 | |
CN110165680B (zh) | 无源配电网电压控制方法、装置、控制设备和存储介质 | |
CN112000660A (zh) | 多报表数据处理方法、装置、计算机设备和存储介质 | |
CN110474974A (zh) | 存储空间处理方法、设备及计算机可读存储介质 | |
CN106326378B (zh) | 一种实时数据库的截止期分配方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |