CN111858637B - 一种数据处理方法及装置 - Google Patents
一种数据处理方法及装置 Download PDFInfo
- Publication number
- CN111858637B CN111858637B CN202010740528.8A CN202010740528A CN111858637B CN 111858637 B CN111858637 B CN 111858637B CN 202010740528 A CN202010740528 A CN 202010740528A CN 111858637 B CN111858637 B CN 111858637B
- Authority
- CN
- China
- Prior art keywords
- data set
- consumption data
- processed
- consumption
- data
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2336—Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
- G06F16/2343—Locking methods, e.g. distributed locking or locking implementation details
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种数据处理方法及装置,其中方法包括:将redis缓存中key值相同的各待处理数据构成消费数据集;每个所述消费数据集中的待处理数据的数量不超过N条,其中N为正整数;分别对各个未加锁的消费数据集进行加锁;获取到消费数据集锁的线程对消费数据集中的待处理数据进行处理,并针对消费数据集中的所有待处理数据的处理结果进行一次性入库操作。该方案可以达到在不发生数据堆积的前提下,仍能够准确地处理redis中待处理的数据的效果。
Description
技术领域
本发明涉及数据处理领域,尤其涉及一种数据处理方法及装置。
背景技术
目前,对于上报的数据的处理方式,主要是先将上报的数据缓存到redis数据库(Remote Dictionary Server,即远程字典服务)中,然后由多线程去处理缓存的数据。
然而,上述的数据处理方式,往往会发生下面的问题:
1、在不使用加锁机制的情况下,由于是通过多线程对待处理的数据进行处理的方式,则对于redis中的待处理的数据,比较容易发生重复读取待处理的数据的现象,从而有可能造成数据处理的错误;
2、在使用加锁机制的情况下,则需要等待多线程对redis中待处理的数据实现完全处理后,redis方可用于缓存新的上报的数据,这样的话,极容易导致上报的数据发生堆积的现象,从而会影响数据上报。
对于以上问题,现有技术目前还无法提供一种在不发生数据堆积的前提下,仍能够准确地处理缓存中待处理的数据的方法。
发明内容
本发明实施例提供一种数据处理方法及装置,用以解决现有技术无法在不发生数据堆积的前提下,仍能够准确地处理缓存中待处理的数据的问题。
第一方面,本发明实施例提供一种数据处理方法,该方法包括:将redis缓存中key值相同的各待处理数据构成消费数据集;每个所述消费数据集中的所述待处理数据的数量不超过N条,其中N为正整数;分别对各个未加锁的所述消费数据集进行加锁;获取到所述消费数据集锁的线程对所述消费数据集中的所述待处理数据进行处理,并针对所述消费数据集中的所有所述待处理数据的处理结果进行一次性入库操作。
众所周知,redis数据库是基于key-value的方式对数据进行存储的,同一key值下存储的value数据可以是非常庞大的,基于该方案,通过将客户端上报至redis缓存中key值相同的各待处理数据构成一个个的消费数据集,从而使得可分别对各消费数据集进行处理,其中每个消费数据集中的待处理数据的数量不超过N条,从而保证了同一key值下的各待处理数据在上报过程中不会发生堆积,后续的数据处理过程也不会影响数据上报过程;此外,通过为未加锁的各个消费数据集设置锁,从而在数据处理过程中,只有获取到锁的消费线程才可对该消费数据集中的待处理数据进行处理,从而避免了同一消费数据集中的待处理数据被多个线程都进行处理而发生数据处理错误的现象,保证了待处理数据可以被准确地处理。该方案可以达到在不发生数据堆积的前提下,仍能够准确地处理redis中待处理的数据的效果。
在一种可能的实现方法中,所述加锁步骤之前,还包括:为不同的所述消费数据集设置不同的key值。
基于该方案,在数据上报至redis缓存中时,通过将所上报的数据按批次的存储在消费数据集中,并为不同的消费数据集设置不同的key值,相当于将各消费数据集中的待处理数据从原key值中移出,从而可以实现分别对各个消费数据集进行加锁,避免因消费数据集的加锁影响原key值下其他待处理数据的上报,同时避免发生后期上报的数据对前期上报的数据的覆盖的现象。
在一种可能的实现方法中,所述将redis缓存中的key值相同的各待处理数据构成消费数据集,包括步骤:创建消费数据集,记录创建时间;依次将接收到的待处理数据存入所述消费数据集,所述待处理数据指向目标key值;若所述消费数据集中的所述待处理数据的数量等于N,或系统当前时间与所述创建时间的差值大于第一时间阈值,则停止存入,并返回至所述创建步骤,直至所述待处理数据均存入对应的所述消费数据集中。
基于该方案,通过创建消费数据集并记录该消费数据集被创建的时间,然后,针对上报至redis缓存的同一key值对应的待处理数据,则可以依次将其存储至已创建的消费数据集,当消费数据集中的待处理数据满足数量要求或者时限要求,则停止将待处理数据存入该消费数据集,完成当前消费数据集的创建。后续只需要重复执行上述步骤,可针对新上报的数据持续创建对应的消费数据集,以使得该key值下存储的value数据均能及时的转存入对应的消费数据集中。
在一种可能的实现方法中,在所述创建消费数据集之后,还包括:设置所述消费数据集的key值,其中所述消费数据集的key值中记录所述目标key值与所述创建时间。
基于该方案,将创建时间记录在key值中,不仅可实现为不同的消费数据集设置不同的key值,同时可实现创建时间的便捷记录。
在一种可能实现的方法中,若所述线程被认定为异常,则对锁进行释放并重新确定获取所述消费数据集锁的线程。
基于该方案,在各个消费数据集被消费线程进行消费时,如果消费线程发生异常而无法对消费数据集中的待处理数据进行处理时,则通过释放消费数据集的锁,并由重新获取到锁的消费线程来再次对消费数据集进行消费,从而保证了消费数据集可以被正常消费。
在一种可能实现的方法中,在完成所述入库操作之后,还包括:从所述redis缓存中删除所述消费数据集,并在删除所述消费数据集之后删除对应的锁。
基于该方案,在对消费数据集中的所有待处理数据的处理结果进行一次性入库操作之后,通过对redis缓存中的原消费数据集进行删除,也一并删除该消费数据集的锁,从而可以保证redis中不存在数据的残留,以及实现redis的高可用性。
在一种可能实现的方法中,在对所述消费数据集进行加锁后,设置锁超时时长;若确定所述消费数据集的加锁时长不小于所述锁超时时长,则对所述消费数据集的锁进行释放。
基于该方案,在为各个消息数据集设置锁时,也为该锁设置了锁超时时长,从而对于这样的一个消费数据集来说,如果它的加锁时长大于等于了锁超时时长,则可以通过自动释放锁的方式、由获取到该锁的消费线程来对该消费数据集进行处理,因此保证了任一个消费数据集中的待处理数据皆可以被完全处理。
第二方面,本发明实施例提供一种数据处理装置,该装置包括:消费数据集形成单元,用于将redis缓存中key值相同的各待处理数据构成消费数据集;每个所述消费数据集中的所述待处理数据的数量不超过N条,其中N为正整数;数据处理单元,用于分别对各个未加锁的所述消费数据集进行加锁;获取到所述消费数据集锁的线程对所述消费数据集中的所述待处理数据进行处理,并针对所述消费数据集中的所有所述待处理数据的处理结果进行一次性入库操作。
众所周知,redis数据库是基于key-value的方式对数据进行存储的,同一key值下存储的value数据可以是非常庞大的,基于该方案,通过将客户端上报至redis缓存中key值相同的各待处理数据构成一个个的消费数据集,其中每个消费数据集中的待处理数据的数量不超过N条,从而保证了各待处理数据在上报过程中不会发生堆积,后续的数据处理过程也不会影响数据上报过程;此外,通过为未加锁的各个消费数据集设置锁,从而在数据处理过程中,只有获取到锁的消费线程才可对该消费数据集中的待处理数据进行处理,从而避免了同一消费数据集中的待处理数据被多个线程都进行处理而发生数据处理错误的现象,保证了待处理数据可以被准确地处理。该方案可以达到在不发生数据堆积的前提下,仍能够准确地处理redis中待处理的数据的效果。
在一种可能的实现方法中,所述数据处理单元还用于:为不同的所述消费数据集设置不同的key值。
基于该方案,在数据上报至redis缓存中时,通过将所上报的数据按批次的存储在消费数据集中,并为不同的消费数据集设置不同的key值,相当于将各消费数据集中的待处理数据从原key值中移出,从而可以实现分别对各个消费数据集进行加锁,避免因消费数据集的加锁影响原key值下其他待处理数据的上报,同时避免发生后期上报的数据对前期上报的数据的覆盖的现象。
在一种可能的实现方法中,所述消费数据集形成单元具体用于:创建消费数据集,记录创建时间;依次将接收到的待处理数据存入所述消费数据集,所述待处理数据指向目标key值;若所述消费数据集中的所述待处理数据的数量等于N,或系统当前时间与所述创建时间的差值大于第一时间阈值,则停止存入,并返回至所述创建步骤,直至所述待处理数据均存入对应的所述消费数据集中。
基于该方案,通过创建消费数据集并记录该消费数据集被创建的时间,然后,针对上报至redis缓存的同一key值对应的待处理数据,则可以依次将其存储至已创建的消费数据集,当消费数据集中的待处理数据满足数量要求或者时限要求,则停止将待处理数据存入该消费数据集,完成当前消费数据集的创建。后续只需要重复执行上述步骤,可针对新上报的数据持续创建对应的消费数据集,以使得该key值下存储的value数据均能及时的转存入对应的消费数据集中。
在一种可能的实现方法中,所述消费数据集形成单元还用于:设置所述消费数据集的key值,其中所述消费数据集的key值中记录所述目标key值与所述创建时间。
基于该方案,将创建时间记录在key值中,不仅可实现为不同的消费数据集设置不同的key值,同时可实现创建时间的便捷记录。
在一种可能的实现方法中,所述数据处理单元还用于:若所述线程被认定为异常,则对锁进行释放并重新确定获取所述消费数据集锁的线程。
基于该方案,在各个消费数据集被消费线程进行消费时,如果消费线程发生异常而无法对消费数据集中的待处理数据进行处理时,则通过释放消费数据集的锁,并由重新获取到锁的消费线程来再次对消费数据集进行消费,从而保证了消费数据集可以被正常消费。
在一种可能的实现方法中,所述数据处理单元还用于:从所述redis缓存中删除所述消费数据集,并在删除所述消费数据集之后删除对应的锁。
基于该方案,在对消费数据集中的所有待处理数据的处理结果进行一次性入库操作之后,通过对redis缓存中的原消费数据集进行删除,也一并删除该消费数据集的锁,从而可以保证redis中不存在数据的残留,以及实现redis的高可用性。
在一种可能的实现方法中,所述数据处理单元还用于:在对所述消费数据集进行加锁后,设置锁超时时长;若确定所述消费数据集的加锁时长不小于所述锁超时时长,则对所述消费数据集的锁进行释放。
基于该方案,在为各个消息数据集设置锁时,也为该锁设置了锁超时时长,从而对于这样的一个消费数据集来说,如果它的加锁时长大于等于了锁超时时长,则可以通过自动释放锁的方式、由获取到该锁的消费线程来对该消费数据集进行处理,因此保证了任一个消费数据集中的待处理数据皆可以被完全处理。
第三方面,本发明实施例提供了一种计算设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行如第一方面任一所述的方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如第一方面任一所述的方法。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种可能的系统架构图;
图2为本发明实施例提供的一种数据处理方法;
图3为本发明实施例提供的一种数据处理装置。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
如图1所示,为本发明实施例提供的一种可能的系统架构图。该系统包括内存型数据库redis和关系型数据库。
其中,redis中包括了多个消费数据集,保存有客户端上报的待处理数据。如图1中的消费数据集1至消费数据集n。
通过对存储于消费数据集中的待处理数据的处理,从而得到处理后的数据。对于处理后的数据,则通过关系型数据库进行存储。
基于图1所示意的系统架构,本发明实施例提供一种数据处理方法,所述方法可应用在服务器上,如图2所示,该方法包括以下步骤:
步骤201,将redis缓存中key值相同的各待处理数据构成消费数据集。
其中,每个所述消费数据集中的所述待处理数据的数量不超过N条,其中N为正整数。
该步骤中,通过将缓存于redis中的key值相同的各待处理数据形成一个个的消费数据集,一方面可实现待处理数据的批量管理,另一方面可便于消费线程对这些消费数据集的消费。
步骤202,分别对各个未加锁的所述消费数据集进行加锁;获取到所述消费数据集锁的线程对所述消费数据集中的所述待处理数据进行处理,并针对所述消费数据集中的所有所述待处理数据的处理结果进行一次性入库操作。
该步骤中,一方面通过为未加锁的消费数据集加锁,从而保证了任一个消费数据集均有对应的锁;以及,针对一个消费数据集,若有一消费线程获取到该消费数据集对应的锁,则可以通过该消费线程来对该消费数据集中的待处理数据进行处理,从而可以使得将对应于该消费数据集的处理结果一次性的存入数据库。
上述方案中,通过将上报至redis缓存中的各待处理数据构成一个个的消费数据集,并为各个消费数据集分别进行加锁,使得各个消费数据集的处理相互独立,同时,由于锁是加在各个消费数据集合的,并不是针对该key值进行设置的,因此也不会影响key值对应的数据上传操作,从而保证了各待处理数据在上报过程中不会发生堆积,后续的数据处理过程也不会影响数据上报过程;此外,通过为未加锁的各个消费数据集设置锁,从而在数据处理过程中,只有获取到锁的消费线程才可对该消费数据集中的待处理数据进行处理,从而避免了同一消费数据集中的待处理数据被多个线程都进行处理而发生数据处理错误的现象,保证了待处理数据可以被准确地处理。该方案可以达到在不发生数据堆积的前提下,仍能够准确地处理redis中待处理的数据的效果。
以下将结合示例分别对上述各步骤进行详细说明。
在上述步骤201的一个实施中,各客户端可基于配置需求,周期性或者实时地向服务器上报数据,例如,服务日志、质量数据、设备状态等,服务器接收到该些上报数据后,先将其缓存在redis数据库中,等待分配消费线程对其进行业务处理,进而基于处理结果对存储数据库进行更新,其中,存储数据库可运行在服务器本地,也可以是运行在其他设备上。
具体而言,各客户端在上报数据时,会将不同数据类型的数据发送至服务器对应的接口,服务器根据接收接口,确定待处理数据对应的key值,并将待处理数据存入该key值对应的value中,如此一来,redis中各个不同的key值便会对应存有相关的待处理数据。本实施例将以一个key值为例,对数据处理方法进行说明。
设在当前redis缓存中key值为myData的value中暂时还未接收任何一条待处理数据,或已接收到若干条待处理数据,此时可以创建一个消费数据集,用于存放myData下已有的待处理数据以及后续新存入的待处理数据,同时记录创建时间Tcreate,同时,可以对该消费数据集的key值进行设置,即对存入该消费数据集的待处理数据进行key值重命名(rename),例如,可以将该消费数据集的key值记为myData+Tcreate,用以将存入消费数据集的待处理数据与myData中的待处理数据进行区分,然后,对于后续上报至redis缓存的myData中接收到的一条条的待处理数据,则可以逐条移入消费数据集myData+Tcreate中。
对于上述将待处理数据存入myData+Tcreate的过程,可以通过以下两种方式确定终止数据存入,也即,消费数据集已完成创建:
方式1,满足数量要求。
具体来说,在数据上报至redis缓存的过程中,在距离消费数据集被创建的预设时长内,消费数据集中所存储的待处理数据的数目达到N条,则可完成消费数据集的创建,对于myData中后续收到的待处理数据,可不必将其存入该消费数据集中了。这里的N条是一个消费数据集最大能够存储的数据量,它可以根据实际情况来调配;这里的预设时长为确定可以形成消费数据集的最大时长,可以根据实际情况来调配。
作为一种特例,若在数据上报至redis缓存的过程中发生了高并发的现象,则表示消费数据集中所存储的待处理数据的数据量可以在很短时间内满足N条。可以理解的是,在高并发的过程中,形成消费数据集的时间将远小于预设时长。
方法2,满足时限要求。
在数据上报频率较低的情况下,消费数据集被创建时长已大于预设时长(第一时间阈值),消费数据集中所存储的待处理数据的数目虽然尚未达到N条,但为了保证数据处理的效率,可以直接完成消费数据集,而无需等待N条数据收集完成。
可以理解的是,通过以上两种方式中的任一种方式完成消费数据集的创建之后,该消费数据集则进入待处理状态,对于后续上报至myData的待处理数据可以通过同样的方法继续创建新的消费数据集,从而实现将上报至myData的待处理数据转移至各个消费数据集中。
在上述步骤201的一个实施中,为了保持各个消费数据集的独立性,可以分别为该些消费数据集设置不同的key值,如上文所述,可以以在原key值的基础上添加时间戳的方式,来作为所形成的消费数据集与其他的消费数据集之间的区别方式,例如myData+Tcreate。通过为不同的消费数据集设置不同的key值,可区分不同批次的待处理数据,并可实现基于各个key值实现后续的加锁操作,从而使得各个消费数据集的处理是相互独立的,同时,也对各个消费数据集合加锁后,不会对myData中的数据上报产生影响。
在上述步骤202的一个实施中,在形成一个个消费数据集后,通过启用一个管理线程来检查该些消费数据集是否加锁,并为没有加锁的消费数据集进行加锁,可以理解的是,对消费数据集加锁可为针对该消费数据集key值进行加锁。
针对已加锁的消费数据集,则可为其分配消费线程来进行处理,消费线程只有在获取到消费数据集的锁后,即可对其进行处理,如此可以保证一个消费数据集同时只有一个消费线程在对它进行处理,而避免发生该消费数据集被其他消费线程处理而造成的重复处理的现象。
在另一个实施中,为了避免因消费线程异常导致的无法及时完成数据处理,并正常对锁进行释放的情况,管理线程在加锁的过程,还可以设置锁超时时长,并可对加锁时长进行检查,若确定消费数据集的加锁时长不小于锁超时时长,则对该消费数据集的锁进行释放。设对于一个消费数据集A,在消费线程B得到对应于消费数据集A的锁时,则确定由消费线程B来对消费数据集A中的待处理数据进行处理。如果消费线程B在处理消费数据集A中的待处理数据时,由于可能发生的异常导致消费线程B无法成功处理。从而为了使得消费数据集A中的待处理数据能够被正常处理,则当消费数据集A的加锁时长大于等于锁超时时长,可自动释放消费数据集A的锁,此后,由新的消费线程再次对消费数据集A中的待处理数据进行处理。
在上述步骤202的一个实施中,消费线程对该消费数据集中的待处理数据进行处理包含对各个待处理数据进行业务处理,例如统计、合并、筛选过滤、计算等,进而得到对应的处理结果,并可将该些处理结果一次性地写入数据库,从而完成对该消费数据集中的待处理数据的处理,其中,一次性地写入数据库表示所有处理结果的入库操作均在同一个事务内完成,如此一来,消费线程仅需与数据库建立一条连接,即可完成消费数据集对应的入库操作,相较于现有技术而言,可节省数据库的连接资源,提高数据入口效率。当消费线程完成入库操作后,可以将该消费数据集从redis缓存中删除,同时一并删除为该消费数据集所设置的锁,从而释放redis存储空间,可以保证redis缓存的高可用性。
基于同样的发明构思,本发明实施例还提供一种数据处理的装置。如图3所示,该装置包括:
消费数据集形成单元301,将redis缓存中key值相同的各待处理数据构成消费数据集;每个所述消费数据集中的所述待处理数据的数量不超过N条,其中N为正整数。
数据处理单元302,用于分别对各个未加锁的所述消费数据集进行加锁;获取到所述消费数据集锁的线程对所述消费数据集中的所述待处理数据进行处理,并针对所述消费数据集中的所有所述待处理数据的处理结果进行一次性入库操作。
进一步地,对于该装置,数据处理单元302,还用于:为不同的所述消费数据集设置不同的key值。
进一步地,对于该装置,消费数据集形成单元301,具体用于:创建一个消费数据集,记录创建时间;依次将接收到的待处理数据存入所述消费数据集,所述待处理数据指向目标key值;若所述消费数据集中的所述待处理数据的数量等于N,或系统当前时间与所述创建时间的差值大于第一时间阈值,则停止存入,并返回至所述创建步骤,直至所述待处理数据均存入对应的所述消费数据集中。
进一步的,对于该装置,消费数据集形成单元301,还用于:设置所述消费数据集的key值,其中所述消费数据集的key值中记录所述目标key值与所述创建时间。
进一步的,对于该装置,数据处理单元302,还用于:若所述线程被认定为异常,则对锁进行释放并重新确定获取所述消费数据集锁的线程。
进一步的,对于该装置,数据处理单元302,还用于:从所述redis缓存中删除所述消费数据集,并在删除所述消费数据集之后删除对应的锁。
进一步的,对于该装置,数据处理单元302,还用于:在对所述消费数据集进行加锁后,设置锁超时时长;若确定所述消费数据集的加锁时长不小于所述锁超时时长,则对所述消费数据集的锁进行释放。
本发明实施例还提供了一种计算设备,该计算设备具体可以为桌面计算机、便携式计算机、智能手机、平板电脑、个人数字助理(Personal Digital Assistant,PDA)等。该计算设备可以包括中央处理器(Center Processing Unit,CPU)、存储器、输入/输出设备等,输入设备可以包括键盘、鼠标、触摸屏等,输出设备可以包括显示设备,如液晶显示器(Liquid Crystal Display,LCD)、阴极射线管(Cathode Ray Tube,CRT)等。
存储器,可以包括只读存储器(ROM)和随机存取存储器(RAM),并向处理器提供存储器中存储的程序指令和数据。在本发明实施例中,存储器可以用于存储数据处理的方法的程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述实施例中的数据处理的方法。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行上述实施例中的数据处理的方法。
本领域内的技术人员应明白,本发明的实施例可提供为方法、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (8)
1.一种数据处理方法,其特征在于,包括:
将redis缓存中key值相同的各待处理数据构成消费数据集;每个消费数据集中的待处理数据的数量不超过N条,其中N为正整数;不同消费数据集具有不同的key值;
通过管理线程来确定消费数据集是否加锁,并分别对各个未加锁的消费数据集进行加锁;
针对任一加锁的消费数据集,通过获取到所述消费数据集的锁的消费线程对所述消费数据集中的待处理数据进行处理,并针对所述消费数据集中的所有待处理数据的处理结果进行一次性入库操作;一次性入库操作均在同一个事务内完成;
创建消费数据集,记录创建时间;
依次将接收到的待处理数据存入所述消费数据集,待处理数据指向目标key值;
若所述消费数据集中的待处理数据的数量等于N,或系统当前时间与所述创建时间的差值大于第一时间阈值,则停止存入,并返回至所述创建消费数据集的步骤,直至待处理数据均存入对应的消费数据集中。
2.如权利要求1所述的方法,其特征在于,
在所述创建消费数据集之后,还包括:
设置所述消费数据集的key值,其中所述消费数据集的key值中记录所述目标key值与所述创建时间。
3.如权利要求1-2任一项所述的方法,其特征在于,还包括:
若所述线程被认定为异常,则对锁进行释放并重新确定获取所述消费数据集的锁的线程。
4.如权利要求1-2任一项所述的方法,其特征在于,
在完成所述入库操作之后,还包括:
从所述redis缓存中删除所述消费数据集,并在删除所述消费数据集之后删除对应的锁。
5.如权利要求1-2任一项所述的方法,其特征在于,还包括:
在对所述消费数据集进行加锁后,设置锁超时时长;
若确定所述消费数据集的加锁时长不小于所述锁超时时长,则对所述消费数据集的锁进行释放。
6.一种数据处理装置,其特征在于,包括:
消费数据集形成单元,用于将redis缓存中key值相同的各待处理数据构成消费数据集;每个消费数据集中的所述待处理数据的数量不超过N条,其中N为正整数;不同消费数据集具有不同的key值;
数据处理单元,用于通过管理线程来确定消费数据集是否加锁,并分别对各个未加锁的消费数据集进行加锁;
数据处理单元,还用于针对任一加锁的消费数据集,通过获取到所述消费数据集的锁的消费线程对所述消费数据集中的待处理数据进行处理,并针对所述消费数据集中的所有待处理数据的处理结果进行一次性入库操作;一次性入库操作均在同一个事务内完成;
消费数据集形成单元,具体用于创建消费数据集,记录创建时间;依次将接收到的待处理数据存入所述消费数据集,待处理数据指向目标key值;若所述消费数据集中的待处理数据的数量等于N,或系统当前时间与所述创建时间的差值大于第一时间阈值,则停止存入,并返回至所述创建消费数据集的步骤,直至待处理数据均存入对应的消费数据集中。
7.一种计算设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行如权利要求1-5任一项所述的方法。
8.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如权利要求1-5任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010740528.8A CN111858637B (zh) | 2020-07-28 | 2020-07-28 | 一种数据处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010740528.8A CN111858637B (zh) | 2020-07-28 | 2020-07-28 | 一种数据处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111858637A CN111858637A (zh) | 2020-10-30 |
CN111858637B true CN111858637B (zh) | 2023-08-18 |
Family
ID=72948681
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010740528.8A Active CN111858637B (zh) | 2020-07-28 | 2020-07-28 | 一种数据处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111858637B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113806384A (zh) * | 2021-08-19 | 2021-12-17 | 紫光云(南京)数字技术有限公司 | 基于redis的分配递增整型数据的方法 |
CN114942851B (zh) * | 2022-07-25 | 2023-04-25 | 北京优合融宜科技有限公司 | 一种内存数据的读写方法以及读写装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106708975A (zh) * | 2016-12-06 | 2017-05-24 | 上海艾融软件股份有限公司 | 商品库存信息的处理方法及系统 |
CN110737681A (zh) * | 2019-10-15 | 2020-01-31 | 深圳前海环融联易信息科技服务有限公司 | 处理请求的加锁处理方法、装置、计算机设备及存储介质 |
CN111427871A (zh) * | 2019-01-09 | 2020-07-17 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置、设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10019297B2 (en) * | 2013-04-03 | 2018-07-10 | Salesforce.Com, Inc. | Systems and methods for implementing bulk handling in asynchronous processing |
-
2020
- 2020-07-28 CN CN202010740528.8A patent/CN111858637B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106708975A (zh) * | 2016-12-06 | 2017-05-24 | 上海艾融软件股份有限公司 | 商品库存信息的处理方法及系统 |
CN111427871A (zh) * | 2019-01-09 | 2020-07-17 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置、设备 |
CN110737681A (zh) * | 2019-10-15 | 2020-01-31 | 深圳前海环融联易信息科技服务有限公司 | 处理请求的加锁处理方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111858637A (zh) | 2020-10-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112445863B (zh) | 一种数据实时同步方法及系统 | |
CN107402981B (zh) | 一种基于分布式离线数据库的数据增量处理方法及系统 | |
US20140379670A1 (en) | Data Item Deletion in a Database System | |
CN111858637B (zh) | 一种数据处理方法及装置 | |
US20130091094A1 (en) | Accelerating data profiling process | |
US20160179825A1 (en) | Smart archiving of real-time performance monitoring data | |
US8650224B2 (en) | Batching content management operations to facilitate efficient database interactions | |
US11275760B2 (en) | Online schema and data transformations | |
CN107688626B (zh) | 慢查询日志处理方法、装置及电子设备 | |
US11176004B2 (en) | Test continuous log replay | |
US11200136B2 (en) | Data monitoring methods, apparatuses, electronic devices, and computer readable storage media | |
US12032553B2 (en) | Data processing method and related apparatus | |
CN114461644A (zh) | 一种数据采集方法、装置、电子设备及存储介质 | |
US11726975B2 (en) | Auto unload | |
US20170255668A1 (en) | Methods and apparatuses for improving processing efficiency in a distributed system | |
EP2731026A1 (en) | Managing data within a cache | |
US9870419B2 (en) | Application cache profiler | |
CN107678856B (zh) | 一种处理业务实体中增量信息的方法及装置 | |
US12093732B2 (en) | Fast shutdown of large scale-up processes | |
CN108959309B (zh) | 数据分析的方法和装置 | |
CN112148705A (zh) | 数据迁移的方法和装置 | |
CN112559547A (zh) | 确定多存储对象副本之间一致性的方法及装置 | |
CN117235051B (zh) | 一种数据库的管理方法、装置、电子设备和存储介质 | |
US12038816B2 (en) | Determining insights related to performance bottlenecks in a multi-tenant database system preliminary class | |
CN118093441B (zh) | 一种cfd软件云测试算例同步方法及自动化测试平台 |
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 |