CN113778910A - 一种数据缓存的处理方法及装置 - Google Patents
一种数据缓存的处理方法及装置 Download PDFInfo
- Publication number
- CN113778910A CN113778910A CN202011552005.7A CN202011552005A CN113778910A CN 113778910 A CN113778910 A CN 113778910A CN 202011552005 A CN202011552005 A CN 202011552005A CN 113778910 A CN113778910 A CN 113778910A
- Authority
- CN
- China
- Prior art keywords
- data
- blocking
- processed
- queue
- blocking queue
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 16
- 230000000903 blocking Effects 0.000 claims abstract description 201
- 238000000034 method Methods 0.000 claims abstract description 39
- 238000004590 computer program Methods 0.000 claims description 10
- 238000007789 sealing Methods 0.000 claims description 8
- 238000005516 engineering process Methods 0.000 claims description 6
- 239000000126 substance Substances 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 abstract description 16
- 238000010586 diagram Methods 0.000 description 13
- 238000004891 communication Methods 0.000 description 7
- 230000003287 optical Effects 0.000 description 4
- 230000004048 modification Effects 0.000 description 3
- 238000006011 modification reaction Methods 0.000 description 3
- 239000000835 fiber Substances 0.000 description 2
- 230000000644 propagated Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 210000003666 Nerve Fibers, Myelinated Anatomy 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 230000000875 corresponding Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000003365 glass fiber Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001960 triggered Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING; 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Abstract
本发明公开了一种数据缓存的处理方法及装置,该方法的一具体实施方式应用于本地缓存,所述本地缓存包括两个阻塞队列,以及用于指示所述两个阻塞队列切换的指针;包括:获取待处理数据;确定所述指针当前指向的所述两个阻塞队列中的第一阻塞队列,将所述待处理数据写入所述第一阻塞队列;当所述第一阻塞队列中的待处理数据满足预设条件时,将所述第一阻塞队列中的待处理数据复制到目标线程中,以利用所述目标线程对所述待处理数据进行处理;将所述指针指向所述两个阻塞队列中的第二阻塞队列,以利用所述第二阻塞队列继续写入待处理数据,涉及计算机技术领域。该实施方式提高了传输速度及吞吐量。
Description
技术领域 本发明涉及计算机技术领域,尤其涉及一种数据缓存的处理方法及装置。 背景技术 在高并发场景中,当并发量足够高时,往往会用到本地缓存来减少第三方缓存(如分布式缓存)的压力。 在采用本地缓存来读写数据时,先将数据存入本地缓存中,此时需要加锁。当本地缓存的数据量或时间间隔达到阈值时,再从本地缓存中读取数据,并将数据写入第三方缓存,此过程也需要加锁。当第三方缓存写入数据成功后,则可删除相应的数据,并释放锁。 在实现本发明过程中,发明人发现现有技术中至少存在如下问题: 在将本地缓存中的数据写入第三方缓存时会涉及网络IO(Input/Output,输入/输出),耗时较长;而在高并发场景下,当数据量足够大时,本地缓存很快会达到阈值,就会触发锁,则写入操作只能等待,直至数据写入第三方缓存并清空本地缓存后才能继续,这将大大减低传输速度及吞吐量。 发明内容 有鉴于此,本发明实施例提供一种数据缓存的处理方法及装置,能够提高传输速度及吞吐量。 为实现上述目的,根据本发明实施例的一个方面,一种数据缓存的处理方法。 本发明实施例的一种数据缓存的处理方法,应用于本地缓存,所述本地缓存包括两个阻塞队列,以及用于指示所述两个阻塞队列切换的指针;包括: 获取待处理数据; 确定所述指针当前指向的所述两个阻塞队列中的第一阻塞队列,将所述待处理数据写入所述第一阻塞队列; 当所述第一阻塞队列中的待处理数据满足预设条件时,将所述第一阻塞队列中的待处理数据复制到目标线程中,以利用所述目标线程对所述待处理数据进行处理; 将所述指针指向所述两个阻塞队列中的第二阻塞队列,以利用所述第二阻塞队列继续写入待处理数据。 可选地,该方法还包括: 对所述指针由所述第一阻塞队列指向第二阻塞队列的过程加锁,并在所述指针指向所述第二阻塞队列后释放锁。 可选地,所述利用所述目标线程对所述待处理数据进行处理,包括: 采用线程封闭技术将所述待处理数据封闭在目标线程的内部,以利用所述目标线程将所述待处理数据写入分布式缓存。 可选地,在所述利用所述目标线程将所述待处理数据写入分布式缓存之后,还包括: 释放所述目标线程中的所述待处理数据。 可选地,该方法还包括:采用回调方式写入时长阈值或存储空间阈值; 所述预设条件包括:所述待处理数据的存储量不小于所述存储空间阈值,或所述待处理数据写入所述第一阻塞队列的时长不小于所述时长阈值。 可选地,所述第一阻塞队列和所述第二阻塞队列的存储空间相等。 可选地,所述第一阻塞队列和/或所述第二阻塞队列为ConcurrentLinked Queue链式队列。 为实现上述目的,根据本发明实施例的又一方面,提供了一种数据缓存的处理装置。 本发明实施例的一种数据缓存的处理装置包括:数据写入模块、数据复制模块和切换模块;其中, 所述数据写入模块,用于获取待处理数据,确定本地缓存中的指针当前指向的两个阻塞队列中的第一阻塞队列,并将所述待处理数据写入所述第一阻塞队列;其中,所述本地缓存包括:所述两个阻塞队列,以及用于指示所述两个阻塞队列切换的指针; 所述数据复制模块,用于当所述第一阻塞队列中的待处理数据满足预设条件时,将所述第一阻塞队列中的待处理数据复制到目标线程中,以利用所述目标线程对所述待处理数据进行处理; 所述切换模块,用于将所述指针指向所述两个阻塞队列中的第二阻塞队列,以利用所述第二阻塞队列继续写入待处理数据。 为实现上述目的,根据本发明实施例的又一方面,提供了一种处理数据的电子设备。 本发明实施例的一种处理数据的电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例的一种数据缓存的处理方法。 为实现上述目的,根据本发明实施例的再一方面,提供了一种计算机可读存储介质。 本发明实施例的一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例的一种数据缓存的处理方法。 上述发明中的一个实施例具有如下优点或有益效果:通过在本地缓存中设置两个阻塞队列,并利用指针的指向在两个阻塞队列中进行切换。在接收到待处理数据时,先将待处理数据写入指针当前指向的第一阻塞队列;当第一阻塞队列中的数据满足预设条件时,可通过目标线程对数据进行处理,同时,将指针指向第二阻塞队列,以利用第二阻塞队列继续存储后续的待处理数据。在此过程中,由于采用两个阻塞队列切换的方式,可在第一阻塞队列将数据复制到目标线程的同时,采用第二阻塞队列继续写入后续的数据,从而减少写入的等待时间,进而提高传输速度及吞吐量。另外,由于采用阻塞队列,则将数据写入阻塞队列的过程无需加锁,从而通过减少锁的数量进一步提高了传输速度及吞吐量。 上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。 附图说明 附图用于更好地理解本发明,不构成对本发明的不当限定。其中: 图1是根据本发明实施例的一种数据缓存的处理方法的主要步骤的示意图; 图2是根据本发明实施例的另一种数据缓存的处理方法的流程示意图; 图3是根据本发明实施例的又一种数据缓存的处理方法的主要步骤的示意图; 图4是根据本发明实施例的一种数据缓存的处理装置的主要模块的示意图; 图5是本发明实施例可以应用于其中的示例性系统架构图; 图6是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。 具体实施方式 以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。 需要指出的是,在不冲突的情况下,本发明的实施例以及实施例中的技术特征可以相互结合。 图1是根据本发明实施例的一种数据缓存的处理方法的主要步骤的示意图。 如图1所示,本发明实施例的一种数据缓存的处理方法可以应用于本地缓存,所述本地缓存包括两个阻塞队列,以及用于指示所述两个阻塞队列切换的指针;该方法主要包括以下步骤: 步骤S101:获取待处理数据。 其中,待处理数据即是待写入本地缓存的数据。例如,当在应用和redis之间增加本地缓存来减少redis压力的场景下,待处理数据可以是应用所产生的数据或应用所接收到的数据。 步骤S102:确定所述指针当前指向的所述两个阻塞队列中的第一阻塞队列,将所述待处理数据写入所述第一阻塞队列。 由于在本地缓存中设置了两个阻塞队列,并利用指针来指示两个阻塞队列的切换。则在准备向本地缓存中写入数据时,如在调用put方法往本地缓存中写入数据时,会往当前队列写入数据,而当前队列即为指针,若指针指向第一阻塞队列,则待处理数据会直接通过当前队列的指针,将数据写入第一阻塞队列中。在这里,阻塞队列可以是java中的BlockingQueue,通过阻塞队列的特性——当队列中没有数据的情况下,消费者端的所有线程都会被自动阻塞(挂起),直到有数据放入队列,以及队列中填满数据的情况下,生产者端的所有线程都会被自动阻塞(挂起),直到队列中有空的位置,线程被自动唤醒,可以保证数据写操作的线程安全,因此数据写过程无需加锁,从而保证了在面对高并发写入时,本地缓存的性能和吞吐量。 可以理解的是,本发明实施例中的第一阻塞队列和第二阻塞队列没有顺序之分,第一和第二的描述也并非对两个阻塞队列进行任何限定,而仅用于对指针在两个阻塞队列之间的切换进行说明。两个阻塞队列当准备写入待处理数据时,指针当前指向的阻塞队列即为第一阻塞队列,例如,当本地缓存中设置有阻塞队列A和阻塞队列B,若准备写入待处理数据时,指针当前指向的是阻塞队列A,则此时阻塞队列A即为第一阻塞队列。在另一个时刻准备写入待处理数据时,指针当前指向的是阻塞队列B,则此时阻塞队列B即为第一阻塞队列。 步骤S103:当所述第一阻塞队列中的待处理数据满足预设条件时,将所述第一阻塞队列中的待处理数据复制到目标线程中,以利用所述目标线程对所述待处理数据进行处理。 其中,所述预设条件包括:所述待处理数据的存储量不小于所述存储空间阈值,或所述待处理数据写入所述第一阻塞队列的时长不小于所述时长阈值。存储空间阈值和时长阈值可以是用户在回调方式中指定的,例如,在java8及以上版本中,可通过stream中的Consumer来指定存储空间阈值和时长阈值,由此通过回调方式将用户操作交由缓存来控制时间和空间。例如,当存储空间阈值为2M、时长阈值为1s时,若第一阻塞队列中所存储的待处理数据达2M或时间间隔达到1s,则将第一阻塞队列中的待处理数据复制到目标线程中,以利用目标线程对待处理数据进行处理。 为了保证线程安全,可采用线程封闭技术将所述待处理数据封闭在目标线程的内部,以利用所述目标线程将所述待处理数据写入分布式缓存。由此,在通过目标线程将待处理数据写入分布式缓存的过程中,可避免待处理数据被篡改,从而保证线程安全。此过程无需加锁,从而通过进一步减少锁的数量来保证本地缓存的性能,提高传输速度及吞吐量。 可以理解的是,通过目标线程除了可以实现将待处理数据写入分布式缓存以外,还可以实现用户指定的其他操作,具体对待处理数据的操作可根据实际场景的不同而有所不同。例如,目标线程执行用户操作,读取待处理数据,并写入redis。用户操作是一个暴露给用户的方法,用于实现具体的操作,可利用java Stream Custom实现。用户操作完成后,目标线程及其内部持有变量会释放掉,也就是说,在将第一阻塞队列中的待处理数据写入分布式缓存后,即释放目标线程中的待处理数据,以等待第二阻塞队列将后续的待处理数据再复制到目标线程中,以此循环,实现数据的缓存处理。 步骤S104:将所述指针指向所述两个阻塞队列中的第二阻塞队列,以利用所述第二阻塞队列继续存储待处理数据。 在将待处理数据复制到目标线程后,通过切换指针使得指针指向第二阻塞队列。其中,为了保证第一阻塞队列和第二阻塞队列中的待处理数据在满足预设条件时,均可复制到目标线程中,在本发明一个实施例中,所述第一阻塞队列和所述第二阻塞队列的存储空间相等,也就是说,第一阻塞队列和第二阻塞队列的大小完全一致,从而保证数据的可控性。 由于本地缓存的数据存储量一般较小,第一阻塞队列和第二阻塞队列可能在很短的时间内就写满数据,需要进行指针切换,也就是说,指针切换的操作可能较为频繁。在本发明一个实施例中,为了保证指针切换无误,对所述指针由所述第一阻塞队列指向第二阻塞队列的过程加锁,并在所述指针指向所述第二阻塞队列后释放锁。可以理解的是,在指针由第二阻塞队列指向第一阻塞队列的过程中也会加锁,并在指针指向第一阻塞队列后释放锁。总之,对指针切换过程进行加锁,并在指针切换完成后释放锁,从而保证指针的有序切换。 其中,所述第一阻塞队列和/或所述第二阻塞队列可以使用效率较高的Concurrent Linked Queue链式队列作为存储介质。由于Concurrent Linked Queue本身的实现是使用cas及头尾指针来保证线程安全的,并且链式结构本身也具有写入快的特点,所以综合效率是非常高的。 下面参考图2所示的队列和线程示意图,对本发明实施例提供的数据缓存的处理方法进行进一步解释。如图3所示,该方法主要包括以下步骤: 步骤S301:获取待处理数据。 步骤S302:在本地缓存的两个阻塞队列中,确定所述指针当前指向的第一阻塞队列,将所述待处理数据写入所述第一阻塞队列。 在准备向本地缓存中写入数据时,如在调用put方法往本地缓存中写入数据时,会往当前队列写入数据,而当前队列即为指针。如图2所示,指针当前指向的队列为队列1,即将待处理数据写入队列1中。由于队列1是阻塞队列,因此写入过程无需加锁。 步骤S303:当第一阻塞队列中的待处理数据的存储量不小于预设空间阈值,或待处理数据写入所述第一阻塞队列的时长不小于所述时长阈值时,将所述第一阻塞队列中的待处理数据复制到子线程,以利用子线程对所述待处理数据进行处理。 在这里,可将待处理数据复制到如图2所示的子线程中的低劣中,并使用线程封闭技术保证线程安全。然后,子线程会执行用户操作,例如读取数据,并写入redis。 步骤S304:将所述指针指向所述两个阻塞队列中的第二阻塞队列,以利用所述第二阻塞队列继续写入待处理数据。 如图2所示,在数据复制完成后,会切换指针,即从队列1切换到队列2,并且队列2和队列1的大小完全一致。此时,新的写入操作会将数据存入队列2中,也就是说,后续的待处理数据会写入队列2中。当队列2中的数据满足预设条件时,则如队列1的操作一样,将队列2中的数据复制到子线程中,并将指针切回至队列1,以此往复,通过队列的切换实现本地缓存中数据的写入,并且,队列切换过程加锁,保证队列的有序切换,从而提高本地缓存的性能,提高传输速度和吞吐量。 步骤S305:在利用子线程将待处理数据写入分布式缓存后,释放子线程中的待处理数据。 在这里,用户操作完成后,子线程及其内部持有变量会释放掉,以等待下一次的数据复制。 根据本发明实施例的一种数据缓存的处理方法可以看出,通过在本地缓存中设置两个阻塞队列,并利用指针的指向在两个阻塞队列中进行切换。在接收到待处理数据时,先将待处理数据写入指针当前指向的第一阻塞队列;当第一阻塞队列中的数据满足预设条件时,可通过目标线程对数据进行处理,同时,将指针指向第二阻塞队列,以利用第二阻塞队列继续存储后续的待处理数据。在此过程中,由于采用两个阻塞队列切换的方式,可在第一阻塞队列将数据复制到目标线程的同时,采用第二阻塞队列继续写入后续的数据,从而减少写入的等待时间,进而提高传输速度及吞吐量。另外,由于采用阻塞队列,则将数据写入阻塞队列的过程无需加锁,从而通过减少锁的数量进一步提高了传输速度及吞吐量。进一步地,采用线程封闭技术将待处理数据封闭在目标线程内部,因此数据写入分布式缓存的过程也无需加锁,从而通过进一步减少锁的数量来保证本地缓存的性能,提高传输速度及吞吐量。 图4是根据本发明实施例的一种数据缓存的处理装置的主要模块的示意图。 如图4所示,本发明实施例的一种数据缓存的处理装置400包括:数据写入模块401、数据复制模块402和切换模块403;其中, 所述数据写入模块401,用于获取待处理数据,确定本地缓存中的指针当前指向的两个阻塞队列中的第一阻塞队列,并将所述待处理数据写入所述第一阻塞队列;其中,所述本地缓存包括:所述两个阻塞队列,以及用于指示两个阻塞队列切换的指针; 所述数据复制模块402,用于当所述第一阻塞队列中的待处理数据满足预设条件时,将所述第一阻塞队列中的待处理数据复制到目标线程中,以利用所述目标线程对所述待处理数据进行处理; 所述切换模块403,用于将所述指针指向所述两个阻塞队列中的第二阻塞队列,以利用所述第二阻塞队列继续写入待处理数据。 在本发明一个实施例中,所述切换模块403,用于对所述指针由所述第一阻塞队列指向第二阻塞队列的过程加锁,并在所述指针指向所述第二阻塞队列后释放锁。 在本发明一个实施例中,所述数据复制模块402,用于采用线程封闭技术将所述待处理数据封闭在目标线程的内部,以利用所述目标线程将所述待处理数据写入分布式缓存。 在本发明一个实施例中,所述数据复制模块402,还用于释放所述目标线程中的所述待处理数据。 在本发明一个实施例中,所述数据写入模块401,用于采用回调方式写入时长阈值或存储空间阈值;所述预设条件包括:所述待处理数据的存储量不小于所述存储空间阈值,或所述待处理数据写入所述第一阻塞队列的时长不小于所述时长阈值。 在本发明一个实施例中,所述第一阻塞队列和所述第二阻塞队列的存储空间相等。 在本发明一个实施例中,所述第一阻塞队列和/或所述第二阻塞队列为Concurrent Linked Queue链式队列。 根据本发明实施例的一种数据缓存的处理装置可以看出,通过在本地缓存中设置两个阻塞队列,并利用指针的指向在两个阻塞队列中进行切换。在接收到待处理数据时,先将待处理数据写入指针当前指向的第一阻塞队列;当第一阻塞队列中的数据满足预设条件时,可通过目标线程对数据进行处理,同时,将指针指向第二阻塞队列,以利用第二阻塞队列继续存储后续的待处理数据。在此过程中,由于采用两个阻塞队列切换的方式,可在第一阻塞队列将数据复制到目标线程的同时,采用第二阻塞队列继续写入后续的数据,从而减少写入的等待时间,进而提高传输速度及吞吐量。另外,由于采用阻塞队列,则将数据写入阻塞队列的过程无需加锁,从而通过减少锁的数量进一步提高了传输速度及吞吐量。进一步地,采用线程封闭技术将待处理数据封闭在目标线程内部,因此数据写入分布式缓存的过程也无需加锁,从而通过进一步减少锁的数量来保证本地缓存的性能,提高传输速度及吞吐量。 图5示出了可以应用本发明实施例的数据缓存的处理方法或数据缓存的处理装置的示例性系统架构500。 如图5所示,系统架构500可以包括终端设备501、502、503,网络504和服务器505。网络504用以在终端设备501、502、503和服务器505之间提供通信链路的介质。网络504可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。 用户可以使用终端设备501、502、503通过网络504与服务器505交互,以接收或发送消息等。终端设备501、502、503上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。 终端设备501、502、503可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。 服务器505可以是提供各种服务的服务器,例如对用户利用终端设备501、502、503所浏览的购物类网站提供支持的后台管理服务器。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果(例如目标推送信息、产品信息)反馈给终端设备。 应该理解,图5中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。 下面参考图6,其示出了适于用来实现本发明实施例的终端设备的计算机系统600的结构示意图。图6示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。 如图6所示,计算机系统600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有系统600操作所需的各种程序和数据。CPU 601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。 以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。 特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被中央处理单元(CPU)601执行时,执行本发明的系统中限定的上述功能。 需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。 附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。 描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括数据写入模块、数据复制模块和切换模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,数据写入模块还可以被描述为“将待处理数据写入第一阻塞队列的模块”。 作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:获取待处理数据;确定所述指针当前指向的两个阻塞队列中的第一阻塞队列,将所述待处理数据写入所述第一阻塞队列;其中,本地缓存包括两个阻塞队列,以及用于指示两个阻塞队列切换的指针;当所述第一阻塞队列中的待处理数据满足预设条件时,将所述第一阻塞队列中的待处理数据复制到目标线程中,以利用所述目标线程对所述待处理数据进行处理;将所述指针指向所述两个阻塞队列中的第二阻塞队列,以利用所述第二阻塞队列继续写入待处理数据。 根据本发明实施例的技术方案,通过在本地缓存中设置两个阻塞队列,并利用指针的指向在两个阻塞队列中进行切换。在接收到待处理数据时,先将待处理数据写入指针当前指向的第一阻塞队列;当第一阻塞队列中的数据满足预设条件时,可通过目标线程对数据进行处理,同时,将指针指向第二阻塞队列,以利用第二阻塞队列继续存储后续的待处理数据。在此过程中,由于采用两个阻塞队列切换的方式,可在第一阻塞队列将数据复制到目标线程的同时,采用第二阻塞队列继续写入后续的数据,从而减少写入的等待时间,进而提高传输速度及吞吐量。另外,由于采用阻塞队列,则将数据写入阻塞队列的过程无需加锁,从而通过减少锁的数量进一步提高了传输速度及吞吐量。进一步地,采用线程封闭技术将待处理数据封闭在目标线程内部,因此数据写入分布式缓存的过程也无需加锁,从而通过进一步减少锁的数量来保证本地缓存的性能,提高传输速度及吞吐量。 上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。