CN111930781A - 对缓存数据库的数据请求的处理方法和装置 - Google Patents
对缓存数据库的数据请求的处理方法和装置 Download PDFInfo
- Publication number
- CN111930781A CN111930781A CN202010725403.8A CN202010725403A CN111930781A CN 111930781 A CN111930781 A CN 111930781A CN 202010725403 A CN202010725403 A CN 202010725403A CN 111930781 A CN111930781 A CN 111930781A
- Authority
- CN
- China
- Prior art keywords
- commands
- command
- thread
- write command
- data request
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 63
- 238000000034 method Methods 0.000 title claims abstract description 55
- 239000000969 carrier Substances 0.000 claims description 24
- 230000015654 memory Effects 0.000 claims description 21
- 238000004458 analytical method Methods 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 4
- 238000005516 engineering process Methods 0.000 abstract description 10
- 230000008569 process Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 6
- 238000003672 processing method Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000011112 process operation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24539—Query rewriting; Transformation using cached or materialised query results
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种对缓存数据库的数据请求的处理方法和装置。其中,该方法包括:获取数据请求,数据请求用于请求对缓存数据库进行操作;将数据请求对应的多个命令分成多类命令,多个命令中的每个命令属于多类命令中的一类;以及,并行运行多类命令。本申请解决了相关技术中缓存的处理效率较低的技术问题。
Description
技术领域
本申请涉及互联网领域,具体而言,涉及一种对缓存数据库的数据请求的处理方法和装置。
背景技术
随着计算机技术的发展,越来越多的计算机技术被应用在各种应用系统,目前的应用系统为了解决高并发带来的性能问题,一般会在应用系统与数据库之间增加缓存层,使用最为广泛的就是非关系数据库(一种内存上使用的缓存数据库)。将其作为软件和传统数据库之间的缓冲层,操作命令简单,在保证了数据有效性的情况下,同时也保证了高性能。
发明人经过对相关技术进行分析认识到,为实现缓存的高可用和高兼容性,保证在大部分用户机器上均可以稳定的运行,并不会对缓存进行优化,缓存在处理数据请求时是按照指令顺序依次处理请求对应的各种命令,从而导致缓存的处理效率较低。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种对缓存数据库的数据请求的处理方法和装置,以至少解决相关技术中缓存的处理效率较低的技术问题。
根据本申请实施例的一个方面,提供了一种对缓存数据库的数据请求的处理方法,包括:获取数据请求,其中,数据请求用于请求对缓存数据库进行操作;将数据请求对应的多个命令分成多类命令,其中,多个命令中的每个命令属于多类命令中的一类;以及,并行运行多类命令。
根据本申请实施例的另一方面,还提供了一种对缓存数据库的数据请求的处理装置,包括:获取单元,用于获取数据请求,其中,数据请求用于请求对缓存数据库进行操作;划分单元,用于将数据请求对应的多个命令分成多类命令,其中,多个命令中的每个命令属于多类命令中的一类;以及,运行单元,用于并行运行多类命令。
根据本申请实施例的另一方面,还提供了一种存储介质,该存储介质包括存储的程序,程序运行时执行上述的方法。
根据本申请实施例的另一方面,还提供了一种电子装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器通过计算机程序执行上述的方法。
在本申请实施例中,将数据请求对应的多个命令分成多类命令,这样在执行数据操作时可以通过并行运行多类命令来实现,而不是采用如传统的单线程等方式串行运行数据请求的多个命令,可以解决相关技术中缓存的处理效率较低的技术问题,进而达到提高数据处理效率的技术效果。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是相关技术中Redis缓存的操作方案的示意图;
图2是根据本申请实施例的对缓存数据库的数据请求的处理方法的硬件环境的示意图;
图3是根据本申请实施例的一种可选的对缓存数据库的数据请求的处理方法的流程图;
图4是根据本申请实施例的一种可选的对缓存数据库的数据请求的处理方法的流程图;
图5是根据本申请实施例的一种可选的线程分配的示意图;
图6是根据本申请实施例的一种可选的对缓存数据库的数据请求的处理装置的示意图;以及,
图7是根据本申请实施例的一种终端的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
发明人经过对相关技术进行分析,认识到传统的缓存(如Redis,Redis主要是应用在数据缓存,Redis API主要用于向Redis发送Redis的命令以操作Redis数据库进行读写)采用的是单个线程处理并执行命令的读写操作,如图1所示,客户端将数据读请求命令发送给Redis缓存,Redis缓存通过IO事件检测到数据读请求命令,利用解析协议进行解析,执行解析到的命令,将执行结果返回给客户端。
而Redis作为一个读多写少的缓存服务,这种只能进行串行处理单个命令的单线程模式就是Redis缓存的性能瓶颈。根据本申请实施例的一方面,提供了一种对缓存数据库的数据请求的处理方法的方法实施例。
可选地,在本实施例中,上述对缓存数据库的数据请求的处理方法可以应用于如图2所示的由第一设备201和第二设备203所构成的硬件环境中。如图2所示,第二设备203通过网络与第一设备201进行连接,可用于为第一设备或第一设备上安装的客户端提供服务(如数据服务、应用服务等),可在第二设备上或独立于第二设备设置数据库205,用于为第二设备203提供数据存储服务,上述网络包括但不限于:广域网、城域网或局域网,第一设备201并不限定于PC、手机、平板电脑等;第二设备203并不限于服务器、计算机设备等。
本申请实施例的对缓存数据库的数据请求的处理方法可以由第二设备203来执行,也可以由第二设备203和第一设备201共同执行。图3是根据本申请实施例的一种可选的对缓存数据库的数据请求的处理方法的流程图,如图3所示,该方法可以包括以下步骤:
步骤S302,第二设备获取数据请求,数据请求用于第一设备请求对第二设备上的缓存数据库进行操作。
上述缓存数据库可以为Redis、Memchache、MongoDb等非关系型数据库缓存,该缓存可位于第二设备和上述数据库205之间,数据请求用于请求进行读、写、修改、删除等操作。
步骤S304,第二设备将数据请求对应的多个命令分成多类命令,多个命令中的每个命令属于多类命令中的一类,多类命令为可并行运行的命令,这多类命令为不存在数据相关的命令。
步骤S306,第二设备并行运行多类命令,并得到相应的运行结果,该结果可以返回给第一设备。
采用本申请上述步骤描述的技术方案,将数据请求对应的多个命令分成多类命令,这样在处理数据请求时可以通过并行运行多类命令来实现,而不是采用如传统的单线程等方式串行运行数据请求的多个命令,可以解决相关技术中缓存的处理效率较低的技术问题,进而达到提高数据处理效率的技术效果。下文结合图3所示的步骤进一步详述本申请的技术方案。
在步骤S302提供的技术方案中,在第一设备需要对第二设备上的缓存数据库进行操作时,第一设备向第二设备发送用于表示数据操作命令的数据请求。
在步骤S304提供的技术方案中,第二设备将数据请求对应的多个命令分成多类命令,多个命令中的每个命令属于多类命令中的一类,以便于并行运行这多类命令。
上述多类命令并行运行在相应的载体上,并行运行的级别可以为芯片级别的并行运行(即每个芯片运行一类命令)、芯片核级别的并行运行(即每个芯片核运行一类命令)、进程级别的并行运行(即芯片上的每个进程运行一类命令)、线程级别的并行运行(即芯片上的每个线程运行一类命令),后续以线程级别的并行运行为例进行说明。
在上述实施例中,将数据请求对应的多个命令分成多类命令可以按照命令所属类型进行分类,如按照读命令、写命令、修改、删除等类型进行分类,如其中每个类型的命令分为一个类型。也可以分成两类线程分别是读命令处理线程、写命令处理线程(可以处理写、修改、删除等操作,将这些操作合并在一个线程中处理可以优化处理器核数资源的使用,从而减少不必要的线程之间的交互开销),客户端(即管理数据库的客户端)对应的线程检测到待处理的IO事件时,进行命令解析并分配相应的线程进行处理,进而使用相应的线程进行数据处理。
可选地,将数据请求对应的多个命令分成多类命令包括如下步骤1-步骤5:
步骤1,在第一线程收到第一设备的数据请求(即IO事件)的情况下,查找多个第二线程中处于空闲状态的第二线程。例如,这多个第二线程可以并行运行,即同一段时间可以处理多个数据请求,故可以通过直接查询各个第二线程是否正在处理其他数据请求来查看是否处于空闲状态。
步骤2,第一线程将数据请求发送给上述处于空闲状态的第二线程。
步骤3,第二线程对数据请求进行解析,数据请求包括按照约定格式设定的包头、包尾以及二者之间的数据操作命令,解析时可以按照该约定格式进行解析。
步骤4,在解析得到的命令为写命令的情况下,第二线程将解析得到的写命令发送给第一线程的命令列表。
步骤5,在解析得到的命令为读命令的情况下,第二线程将解析得到的读命令保存为待运行的命令。
在上述方案中将命令主要分为了两类,其一是读命令(可以由第二线程处理),其二是写命令(可以由第一线程处理),实际也可以根据需要分成更多的类别。
在步骤S306提供的技术方案中,并行运行多类命令,并向第一设备发送运行结果。
在上述实施例中,可将多类命令中的每一类命令运行在多个载体中一个载体上,用于运行多类命令中任意两类命令的载体不同,同一类命令可以运行在同一个载体上,也可以分别运行在不同的载体上,多个载体为并行运行的载体,如处理器芯片、芯片核、进程、线程等。
可选地,以线程级别的并行处理为例,在将多类命令中的每一类命令运行在多个载体中一个载体上之前,可以在第二设备的处理器上创建多个线程,多个载体包括多个线程;在将多类命令中的每一类命令运行在多个载体中一个载体上时,将多类命令中的每一类命令运行在多个线程中的一个线程上,每一个线程运行一类命令。
可选地,将多类命令中的每一类命令运行在多个线程中的一个线程上包括:在第一线程上运行写命令,写命令用于指示在缓存数据库中写入数据,写命令属于多类命令中的第一类命令(可将读命令以外的命令,如写命令、修改命令、删除命令等,设为第一类命令),多个线程包括第一线程;和/或,在第二线程上运行读命令,读命令用于指示从缓存数据库中读取数据,读命令属于多类命令中的第二类命令(可将读命令设为第二类命令),多个线程包括第二线程。
在上述实施例中,在第一线程上运行写命令时,第一线程的数量可以为多个,但是为了兼顾已有场景(已有场景采用单线程),也可为一个,此时,在第一线程上运行写命令包括按照如下方式在第一线程上运行命令列表中的每个写命令:第一线程从命令列表中获取目标写命令,通过命令列表缓存所有待处理的写命令,目标写命令为命令列表中待处理的写命令;在第一线程上运行目标写命令。
可选地,缓存可能由于某些原因(如宕机、处于锁定状态)暂时不能写入,但是过一段时间后会恢复,为了保证业务的正常执行,在第一线程上运行写命令的过程中,可以按照如下步骤1-步骤3所示的方案记录命令的处理状态,必要时重复执行:
步骤1,在第一线程从命令列表中获取目标写命令之后,将目标写命令的状态由待处理变更为处理中;
步骤2,在第一线程运行目标写命令成功的情况下,将目标写命令的状态由处理中变更为完成,状态为完成的命令不会再被运行;
步骤3,在第一线程运行目标写命令失败的情况下,将目标写命令的状态由处理中变更为待处理,以便于之后再次被运行。
可选地,考虑到某些故障是短时间不可恢复的,但是读写资源是有限的,为了将有限的资源用于处理有价值的业务,在将目标写命令的状态由处理中变更为待处理之后,可以按照如下步骤1-步骤2进行处理:
步骤1,记录目标写命令运行失败的次数;
步骤2,在目标写命令运行失败的次数达到目标阈值的情况下,不再重复运行目标写命令,并向第一设备推送目标写命令运行失败的提示信息。
在上述实施例中,为了提高处理效率,在第二线程上运行读命令时,在存在多个读命令的情况下,在多个第二线程上运行多个读命令,每个第二线程用于运行至少一个读命令,读命令的数量为m,第二线程的数量为n,那么m的数量大于等于n,这多个读命令可以是读取相同的一份文件或者一类数据(每个读命令读取其中的一部分),也可以读取多份文件或者多类数据(每个读命令读取其中的至少一份数据或者至少一类数据)。
可选地,在运行完命令之后,在向第一设备并行运行多类命令时,可向第一设备返回在多个载体上运行多类命令得到的运行结果。
在本申请的技术方案中,可以将命令解析的部分独立到读命令运行线程(即第二线程)中,将写命令运行线程设置为一个,读命令运行线程由于不涉及到内存数据的修改,可以设置成多个,具体个数可根据具体业务场景来参数化设置,从而可以提高相关技术中的处理效率。
Redis作为一个读多写少的缓存服务,那么单个命令处理的线程就是Redis性能的瓶颈,作为一种可选的实施例,下面结合图4和图5、以Redis缓存为例进一步详述本申请的技术方案。
本发明主要是针对高性能的要求的客户,这些客户需要Redis接受超过常规的IOPS能力,假设常规的Redis社区版本QPS一般处在N(如100000)左右,但是想在不增加那么节点的状态下,将一个实例增加到N的数倍甚至达到十倍,从而解决客户的问题。
步骤S402,客户端发起命令运行请求(或称命令执行请求)时,写命令运行线程检测到IO事件新连接。
步骤S404,当有新连接时时,写命令运行线程将IO事件根据算法分发给相应的读命令运行线程。
步骤S406,读命令运行线程接收到IO事件。
步骤S408,读命令运行线程开始处理IO事件,进行对应的协议解析,得到解析后的命令。
步骤S410,判断是读命令还是写命令,读命令运行线程通过命令表格区分出数据的读命令和数据修改或者写的命令,若是读命令则执行步骤S412,若是写命令则执行步骤S416。
步骤S412,读命令运行线程自身运行读命令。
步骤S414,读命令运行线程自身运行完成后将运行结果返回给客户端。
步骤S416,若是写命令,读命令运行线程则将命令发送到写命令运行线程的命令队列中,写命令运行线程发现自己的队列中存在对应的数据时,读取待运行的命令。
步骤S418,写命令运行线程运行相应的命令,并更新数据,更新主从复制信息等影响数据一致性的状态的操作。
步骤S420,命令运行完成后写命令运行线程直接将结果返回给客户端。
在本申请的技术方案中,将命令运行的逻辑区分到不同线程中,采用多读命令处理线程,多写命令处理线程,保持了单一写命令运行线程,保持原生Redis的特种特性。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
根据本申请实施例的另一个方面,还提供了一种用于实施上述对缓存数据库的数据请求的处理方法的对缓存数据库的数据请求的处理装置。图6是根据本申请实施例的一种可选的对缓存数据库的数据请求的处理装置的示意图,如图6所示,该装置可以包括:
获取单元601,用于获取数据请求,数据请求用于请求对缓存数据库进行操作。
划分单元603,用于将所述数据请求对应的多个命令分成多类命令,其中,所述多个命令中的每个命令属于所述多类命令中的一类。
运行单元605,并行运行多类命令。
需要说明的是,该实施例中的获取单元601可以用于执行本申请实施例中的步骤S302,该实施例中的划分单元603可以用于执行本申请实施例中的步骤S304,该实施例中的运行单元605可以用于执行本申请实施例中的步骤S306。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图2所示的硬件环境中,可以通过软件实现,也可以通过硬件实现。
通过上述模块,将数据请求对应的多个命令分成多类命令,这样在执行数据操作命令时可以通过并行运行多类命令来实现,而不是采用如传统的单线程等方式串行运行数据请求的多个命令,可以解决相关技术中缓存的处理效率较低的技术问题,进而达到提高数据处理效率的技术效果。
可选地,本申请的运行单元,用于在向第一设备并行运行多类命令之前,将多类命令中的每一类命令运行在多个载体中一个载体上,其中,用于运行多类命令中任意两类命令的载体不同,多个载体为并行运行的载体。
可选地,运行单元还可用于:向第一设备返回在多个载体上运行多类命令得到的运行结果。
可选地,本申请的装置还可包括:创建单元,用于在将多类命令中的每一类命令运行在多个载体中一个载体上之前,在第二设备的处理器上创建多个线程,其中,多个载体包括多个线程。
可选地,上述运行单元还可用于将多类命令中的每一类命令运行在多个线程中的一个线程上。
可选地,上述运行单元还可用于:在第一线程上运行写命令,其中,写命令用于指示在缓存数据库中写入数据,写命令属于多类命令中的第一类命令,多个线程包括第一线程;和/或,在第二线程上运行读命令,其中,读命令用于指示从缓存数据库中读取数据,读命令属于多类命令中的第二类命令,多个线程包括第二线程。
可选地,上述运行单元还可用于按照如下方式在第一线程上运行命令列表中的每个写命令包括:第一线程从命令列表中获取目标写命令,其中,命令列表用于保存待处理的写命令,目标写命令为命令列表中待处理的写命令;以及,在第一线程上运行目标写命令。
可选地,上述运行单元还可用于:在第一线程上运行写命令的过程中,在第一线程从命令列表中获取目标写命令之后,将目标写命令的状态由待处理变更为处理中;在第一线程运行目标写命令成功的情况下,将目标写命令的状态由处理中变更为完成;以及,在第一线程运行目标写命令失败的情况下,将目标写命令的状态由处理中变更为待处理。
可选地,上述运行单元还可用于:在将目标写命令的状态由处理中变更为待处理之后,记录目标写命令运行失败的次数;以及,在目标写命令运行失败的次数达到目标阈值的情况下,不再重复运行目标写命令,并向第一设备推送目标写命令运行失败的提示信息。
可选地,上述运行单元还可用于:在存在多个读命令的情况下,在多个第二线程上运行多个读命令,其中,每个第二线程用于运行至少一个读命令。
可选地,上述划分单元还可用于:在第一线程检测到数据请求的情况下,第一线程将数据请求发送给第二线程,其中,多个线程包括第一线程和第二线程;第二线程对数据请求进行解析;在解析得到的命令为写命令的情况下,第二线程将解析得到的写命令发送给第一线程的命令列表;以及,在解析得到的命令为读命令的情况下,第二线程将解析得到的读命令保存为待运行的命令。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图2所示的硬件环境中,可以通过软件实现,也可以通过硬件实现,其中,硬件环境包括网络环境。
根据本申请实施例的另一个方面,还提供了一种用于实施上述对缓存数据库的数据请求的处理方法的服务器或终端。
图7是根据本申请实施例的一种终端的结构框图,如图7所示,该终端可以包括:一个或多个(图7中仅示出一个)处理器701、存储器703、以及传输装置705,如图7所示,该终端还可以包括输入输出设备707。
其中,存储器703可用于存储软件程序以及模块,如本申请实施例中的对缓存数据库的数据请求的处理方法和装置对应的程序指令/模块,处理器701通过运行存储在存储器703内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的对缓存数据库的数据请求的处理方法。存储器703可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器703可进一步包括相对于处理器701远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
上述的传输装置705用于经由一个网络接收或者发送数据,还可以用于处理器与存储器之间的数据传输。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置705包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置705为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
其中,具体地,存储器703用于存储应用程序。
处理器701可以通过传输装置705调用存储器703存储的应用程序,以执行下述步骤:
获取数据请求,其中,数据请求用于请求对缓存数据库进行操作;
将数据请求对应的多个命令分成多类命令,其中,多个命令中的每个命令属于多类命令中的一类;以及,
并行运行多类命令。
处理器701还用于执行下述步骤:
在第一线程检测到数据请求所请求的数据请求的情况下,第一线程将数据请求发送给第二线程,其中,多个线程包括第一线程和第二线程;
第二线程对数据请求进行解析;
在解析得到的命令为写命令的情况下,第二线程将解析得到的写命令发送给第一线程的命令列表;以及,
在解析得到的命令为读命令的情况下,第二线程将解析得到的读命令保存为待运行的命令。
采用本申请实施例,提供了一种“获取数据请求,其中,数据请求用于请求对缓存数据库进行操作;将数据请求对应的多个命令分成多类命令,其中,多个命令中的每个命令属于多类命令中的一类;以及,并行运行多类命令”的方案。将数据请求对应的多个命令分成多类命令,这样在处理数据请求时可以通过并行运行多类命令来实现,而不是采用单线程的方式串行运行数据请求的多个命令,可以解决相关技术中缓存的处理效率较低的技术问题,进而达到提高数据处理效率的技术效果。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
本领域普通技术人员可以理解,图7所示的结构仅为示意,终端可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile InternetDevices,MID)、PAD等终端设备。图7其并不对上述电子装置的结构造成限定。例如,终端还可包括比图7中所示更多或者更少的载体(如网络接口、显示装置等),或者具有与图7所示不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(RandomAccess Memory,RAM)、磁盘或光盘等。
本申请的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于执行对缓存数据库的数据请求的处理方法的程序代码。
可选地,在本实施例中,上述存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
获取数据请求,其中,数据请求用于请求对缓存数据库进行操作;
将数据请求对应的多个命令分成多类命令,其中,多个命令中的每个命令属于多类命令中的一类;以及,
并行运行多类命令。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:
在第一线程检测到数据请求的情况下,第一线程将数据请求发送给第二线程,其中,多个线程包括第一线程和第二线程;
第二线程对数据请求进行解析;
在解析得到的命令为写命令的情况下,第二线程将解析得到的写命令发送给第一线程的命令列表;以及,
在解析得到的命令为读命令的情况下,第二线程将解析得到的读命令保存为待运行的命令。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或载体可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (12)
1.一种对缓存数据库的数据请求的处理方法,其特征在于,包括:
获取数据请求,其中,所述数据请求用于请求对缓存数据库进行操作;
将所述数据请求对应的多个命令分成多类命令,其中,所述多个命令中的每个命令属于所述多类命令中的一类;以及,
并行运行所述多类命令。
2.根据权利要求1所述的方法,其特征在于,并行运行所述多类命令包括:
将所述多类命令中的每一类命令运行在多个载体中一个载体上,其中,用于运行所述多类命令中任意两类命令的载体不同,所述多个载体为并行运行的载体。
3.根据权利要求2所述的方法,其特征在于,
在将所述多类命令中的每一类命令运行在多个载体中一个载体上之前,所述方法还包括:在处理器上创建多个线程,其中,所述多个载体包括所述多个线程;
将所述多类命令中的每一类命令运行在多个载体中一个载体上包括:将所述多类命令中的每一类命令运行在所述多个线程中的一个线程上。
4.根据权利要求3所述的方法,其特征在于,将所述多类命令中的每一类命令运行在所述多个线程中的一个线程上包括:
在第一线程上运行写命令,其中,所述写命令用于指示在所述缓存数据库中写入数据,所述写命令属于所述多类命令中的第一类命令,所述多个线程包括所述第一线程;
在第二线程上运行读命令,其中,所述读命令用于指示从所述缓存数据库中读取数据,所述读命令属于所述多类命令中的第二类命令,所述多个线程包括所述第二线程。
5.根据权利要求4所述的方法,其特征在于,在第一线程上运行写命令包括按照如下方式在所述第一线程上运行命令列表中的每个写命令:
所述第一线程从所述命令列表中获取目标写命令,其中,所述命令列表用于保存所有待处理的写命令,所述目标写命令为所述命令列表中当前待处理的写命令;以及,
在所述第一线程上运行所述目标写命令。
6.根据权利要求5所述的方法,其特征在于,在所述第一线程上运行写命令的过程中,所述方法还包括:
在所述第一线程从命令列表中获取所述目标写命令之后,将所述目标写命令的状态由待处理变更为处理中;
在所述第一线程运行所述目标写命令成功的情况下,将所述目标写命令的状态由处理中变更为完成;以及,
在所述第一线程运行所述目标写命令失败的情况下,将所述目标写命令的状态由处理中变更为待处理。
7.根据权利要求6所述的方法,其特征在于,在将所述目标写命令的状态由处理中变更为待处理之后,所述方法还包括:
记录所述目标写命令运行失败的次数;以及,
在所述目标写命令重复运行失败的次数达到目标阈值的情况下,不再重复运行所述目标写命令,并推送所述目标写命令运行失败的提示信息。
8.根据权利要求4所述的方法,其特征在于,在第二线程上运行读命令包括:
在存在多个所述读命令的情况下,在多个所述第二线程上运行多个所述读命令,其中,每个所述第二线程用于运行至少一个所述读命令。
9.根据权利要求4至8中任意一项所述的方法,其特征在于,将所述数据请求对应的多个命令分成多类命令包括:
在所述第一线程接收到所述数据请求的情况下,所述第一线程将所述数据请求发送给处于空闲状态的所述第二线程;
所述第二线程对所述数据请求进行解析;
在解析得到的命令为写命令的情况下,所述第二线程将解析得到的写命令发送给第一线程的命令列表;以及,
在解析得到的命令为读命令的情况下,所述第二线程将解析得到的读命令保存为待运行的命令。
10.一种对缓存数据库的数据请求的处理装置,其特征在于,包括:
获取单元,用于获取数据请求,其中,所述数据请求用于请求对缓存数据库进行操作;
划分单元,用于将所述数据请求对应的多个命令分成多类命令,其中,所述多个命令中的每个命令属于所述多类命令中的一类;以及,
运行单元,用于并行运行所述多类命令。
11.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,所述程序运行时执行上述权利要求1至9任一项中所述的方法。
12.一种电子装置,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器通过所述计算机程序执行上述权利要求1至9任一项中所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010725403.8A CN111930781A (zh) | 2020-07-24 | 2020-07-24 | 对缓存数据库的数据请求的处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010725403.8A CN111930781A (zh) | 2020-07-24 | 2020-07-24 | 对缓存数据库的数据请求的处理方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111930781A true CN111930781A (zh) | 2020-11-13 |
Family
ID=73314609
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010725403.8A Pending CN111930781A (zh) | 2020-07-24 | 2020-07-24 | 对缓存数据库的数据请求的处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111930781A (zh) |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104252501A (zh) * | 2013-06-29 | 2014-12-31 | 华为技术有限公司 | 一种执行数据库操作命令的计算设备和方法 |
CN104572638A (zh) * | 2013-10-09 | 2015-04-29 | 腾讯科技(深圳)有限公司 | 数据读写方法及装置 |
US20150149426A1 (en) * | 2013-11-22 | 2015-05-28 | Kyu Hwan Kim | Transaction commit operations with thread decoupling and grouping of i/o requests |
CN106528293A (zh) * | 2016-11-04 | 2017-03-22 | 武汉斗鱼网络科技有限公司 | 一种访问数据库的方法及装置 |
CN106776775A (zh) * | 2016-11-11 | 2017-05-31 | 北京奇虎科技有限公司 | 并发主从同步方法及装置 |
CN106911782A (zh) * | 2017-02-28 | 2017-06-30 | 北京微影时代科技有限公司 | 一种数据读取方法及装置 |
CN107590199A (zh) * | 2017-08-18 | 2018-01-16 | 西安理工大学 | 一种面向内存的多线程数据库设计方法 |
CN107741963A (zh) * | 2017-09-30 | 2018-02-27 | 北京奇虎科技有限公司 | 跨集群数据合并方法及装置、电子设备、计算机存储介质 |
CN108121822A (zh) * | 2018-01-09 | 2018-06-05 | 北京奇艺世纪科技有限公司 | 一种写入数据方法和装置 |
CN109033359A (zh) * | 2018-07-26 | 2018-12-18 | 北京天地和兴科技有限公司 | 一种多进程安全访问sqlite的方法 |
US10282331B1 (en) * | 2018-02-26 | 2019-05-07 | Arista Networks, Inc. | System and method for command processing |
CN110647511A (zh) * | 2019-09-27 | 2020-01-03 | 掌阅科技股份有限公司 | 数据同步方法、计算设备及计算机存储介质 |
CN110737510A (zh) * | 2019-10-23 | 2020-01-31 | 北京百度网讯科技有限公司 | 块设备管理系统 |
CN110737682A (zh) * | 2019-10-17 | 2020-01-31 | 贝壳技术有限公司 | 一种缓存操作方法、装置、存储介质和电子设备 |
CN111242754A (zh) * | 2018-11-13 | 2020-06-05 | 北京嘀嘀无限科技发展有限公司 | 账户数据更新方法、装置及电子设备 |
-
2020
- 2020-07-24 CN CN202010725403.8A patent/CN111930781A/zh active Pending
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104252501A (zh) * | 2013-06-29 | 2014-12-31 | 华为技术有限公司 | 一种执行数据库操作命令的计算设备和方法 |
CN104572638A (zh) * | 2013-10-09 | 2015-04-29 | 腾讯科技(深圳)有限公司 | 数据读写方法及装置 |
US20150149426A1 (en) * | 2013-11-22 | 2015-05-28 | Kyu Hwan Kim | Transaction commit operations with thread decoupling and grouping of i/o requests |
CN106528293A (zh) * | 2016-11-04 | 2017-03-22 | 武汉斗鱼网络科技有限公司 | 一种访问数据库的方法及装置 |
CN106776775A (zh) * | 2016-11-11 | 2017-05-31 | 北京奇虎科技有限公司 | 并发主从同步方法及装置 |
CN106911782A (zh) * | 2017-02-28 | 2017-06-30 | 北京微影时代科技有限公司 | 一种数据读取方法及装置 |
CN107590199A (zh) * | 2017-08-18 | 2018-01-16 | 西安理工大学 | 一种面向内存的多线程数据库设计方法 |
CN107741963A (zh) * | 2017-09-30 | 2018-02-27 | 北京奇虎科技有限公司 | 跨集群数据合并方法及装置、电子设备、计算机存储介质 |
CN108121822A (zh) * | 2018-01-09 | 2018-06-05 | 北京奇艺世纪科技有限公司 | 一种写入数据方法和装置 |
US10282331B1 (en) * | 2018-02-26 | 2019-05-07 | Arista Networks, Inc. | System and method for command processing |
CN109033359A (zh) * | 2018-07-26 | 2018-12-18 | 北京天地和兴科技有限公司 | 一种多进程安全访问sqlite的方法 |
CN111242754A (zh) * | 2018-11-13 | 2020-06-05 | 北京嘀嘀无限科技发展有限公司 | 账户数据更新方法、装置及电子设备 |
CN110647511A (zh) * | 2019-09-27 | 2020-01-03 | 掌阅科技股份有限公司 | 数据同步方法、计算设备及计算机存储介质 |
CN110737682A (zh) * | 2019-10-17 | 2020-01-31 | 贝壳技术有限公司 | 一种缓存操作方法、装置、存储介质和电子设备 |
CN110737510A (zh) * | 2019-10-23 | 2020-01-31 | 北京百度网讯科技有限公司 | 块设备管理系统 |
Non-Patent Citations (1)
Title |
---|
张阳伟;李成凤;张丰;: "基于B/S架构的嵌入式远程用电管理系统", 计算机测量与控制, no. 07, 25 July 2017 (2017-07-25) * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109254733B (zh) | 用于存储数据的方法、装置和系统 | |
CN103294710B (zh) | 一种数据存取方法和装置 | |
CN110096336B (zh) | 数据监控方法、装置、设备和介质 | |
CN103595790B (zh) | 设备远程访问的方法、瘦客户端和虚拟机 | |
CN103607428B (zh) | 一种访问共享内存的方法和装置 | |
CN107506145B (zh) | 一种物理存储调度方法及云主机创建方法 | |
CN107870928A (zh) | 文件读取方法和装置 | |
CN111416825A (zh) | 线程间无锁日志管理方法和系统、终端、存储介质 | |
CN115292280A (zh) | 一种跨区域的数据调度方法、装置、设备及存储介质 | |
CN108228476B (zh) | 一种数据获取方法及装置 | |
CN113992662A (zh) | 文件传输方法、装置及存储介质 | |
CN103970512A (zh) | 多核处理器及其并行重放方法 | |
CN104598409A (zh) | 一种处理输入输出请求的方法及设备 | |
CN113609055A (zh) | 一种后端设备获取描述符的方法、装置、设备及可读介质 | |
CN111414339B (zh) | 一种文件的处理方法、系统、装置、设备及介质 | |
CN115951845B (zh) | 一种磁盘管理方法、装置、设备及存储介质 | |
CN111352769B (zh) | 恢复数据库的方法、恢复服务器及计算机可读存储介质 | |
CN112596669A (zh) | 一种基于分布式存储的数据处理方法及装置 | |
CN111435323B (zh) | 信息的传输方法、装置、终端、服务器及存储介质 | |
CN111930781A (zh) | 对缓存数据库的数据请求的处理方法和装置 | |
CN114116681B (zh) | 数据迁移方法及装置 | |
CN116303211A (zh) | 一种应用于车载场景的cpu多核间通信方法及装置 | |
CN114675954A (zh) | 任务调度方法及装置 | |
CN115543859A (zh) | 多分区ssd的磨损均衡优化方法、装置、设备及介质 | |
US11429870B2 (en) | Method for configuring deep learning program and container manager |
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 |