CN115391634A - 数据查询方法、装置、存储介质及电子装置 - Google Patents
数据查询方法、装置、存储介质及电子装置 Download PDFInfo
- Publication number
- CN115391634A CN115391634A CN202210909911.0A CN202210909911A CN115391634A CN 115391634 A CN115391634 A CN 115391634A CN 202210909911 A CN202210909911 A CN 202210909911A CN 115391634 A CN115391634 A CN 115391634A
- Authority
- CN
- China
- Prior art keywords
- request
- processed
- query
- requests
- lock
- 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
- 238000000034 method Methods 0.000 title claims abstract description 64
- 230000000875 corresponding effect Effects 0.000 claims description 88
- 238000004590 computer program Methods 0.000 claims description 10
- 230000002596 correlated effect Effects 0.000 claims description 4
- 230000004044 response Effects 0.000 abstract description 8
- 230000008569 process Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000003068 static effect Effects 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/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9532—Query formulation
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据查询方法、装置、存储介质及电子装置,涉及数据查询技术领域,该数据查询方法包括:确定待处理请求,按照加锁规则根据查询参数对所述待处理请求加锁;确定多个待处理请求中持有锁的至少一个第一待处理请求,从数据库中获取与所述查询参数对应的查询结果,将所述查询结果存储到缓存中,并释放所述第一待处理请求对锁的控制权;对等待队列中待处理请求进行加锁,确定持有锁的第二待处理请求,从缓存中查询与所述第二待处理请求对应的查询结果;所述方法对于待处理请求,在查询数据库之前先从缓存中查询,避免所有请求同时访问数据库,降低了数据库的压力,缩短了服务端响应的时间,提高了服务端的性能。
Description
技术领域
本申请涉及数据查询技术领域,具体而言,涉及一种数据查询方法、装置、存储介质及电子装置。
背景技术
随着信息技术和网络技术的发展,缓存技术为一个不可或缺的领域,在一定程度上提高了系统的并发性能,对用户请求的响应速度有了一定的提高。
针对线上购物的场景,当商家开启活动引导用户参与时,若大量用户同时参与活动时,将会向服务端发送请求,服务端会先从缓存中查询结果数据,若缓存中存在结果数据,则立即结束请求并返回数据;如果缓存中不存在结果数据,则转到Mysql数据库中查询数据。当服务端接收到大量用户的请求并发访问,并且从缓存中没有得到结果数据时,服务端可以根据请求对数据库进行访问,由于数据库拥堵,服务端存在响应时间较长和性能较低的问题。
发明内容
本申请提供一种数据查询方法、装置、存储介质及电子装置,以解决现有的服务端在接收到大量用户的请求时存在的响应时间较长和性能较低的问题。
第一方面,本申请提供一种数据查询方法,所述方法包括:
确定待处理请求,按照加锁规则根据查询参数对所述待处理请求加锁;所述加锁规则表示当多个请求对应的查询参数相同时,所述多个请求中的一个请求获取锁的控制权,其余请求确定为加锁失败的请求;
确定多个待处理请求中持有锁的至少一个第一待处理请求,从数据库中获取与所述查询参数对应的查询结果,将所述查询结果存储到缓存中,并释放所述第一待处理请求对锁的控制权;
对等待队列中待处理请求进行加锁,确定持有锁的第二待处理请求,从缓存中查询与所述第二待处理请求对应的查询结果;所述等待队列中的待处理请求为加锁失败的请求。
可选的,从缓存中查询与所述第二待处理请求对应的查询结果,包括:
当所述缓存中不存在所述查询结果时,从数据库中获取对应的查询结果;
当获取所述查询结果后,将所述查询结果存储到缓存中,并释放所述第二待处理请求对锁的控制权。
可选的,所述对等待队列中待处理请求进行加锁,包括:
确定与释放锁的控制权的第一待处理请求对应的目标查询参数;
确定所述等待队列中的第二待处理请求;所述第二待处理请求的查询参与所述目标查询参数相同;
按照加锁规则根据所述目标查询参数对所述第二待处理请求加锁。
可选的,确定所述等待队列中的第二待处理请求,包括:
当所述等待队列中存在多个查询参数与所述目标查询参数相同的待处理请求时,确定各个待处理请求在等待队列中的位置;
根据所述位置将距离所述等待队列的头部位置最近的请求确定为第二待处理请求。
可选的,按照加锁规则根据所述目标查询参数对所述第二待处理请求加锁,包括:
调整所述第二待处理请求的位置为头部位置;
将位于头部位置的请求从等待队列中出队,并根据所述目标查询参数进行加锁,以使从所述等待队列中出队的第二待处理请求持有锁。
可选的,所述方法还包括:
针对所述等待队列中的每一待处理请求,判断对应的等待时长是否大于预设时长;
若大于,确定对应的待处理请求超时,并向对应的用户发送请求失败的信息。
可选的,将所述查询结果存储到缓存中,包括:
计算与所述查询结果对应的请求的接收次数,根据所述接收次数确定所述查询结果对应的有效时间;所述有效时长与所述接收次数成正相关;
将所述查询结果和对应的有效时间存储到缓存中;所述有效时间表示所述查询结果在所述缓存中的存储时长。
第二方面,本申请提供一种数据查询装置,所述装置包括:
确定模块,用于确定待处理请求,按照加锁规则根据查询参数对所述待处理请求加锁;所述加锁规则表示当多个请求对应的查询参数相同时,所述多个请求中的一个请求获取锁的控制权,其余请求确定为加锁失败的请求;
第一处理模块,用于确定多个待处理请求中持有锁的至少一个第一待处理请求,从数据库中获取与所述查询参数对应的查询结果,将所述查询结果存储到缓存中,并释放所述第一待处理请求对锁的控制权;
第二处理模块,用于对等待队列中待处理请求进行加锁,确定持有锁的第二待处理请求,从缓存中查询与所述第二待处理请求对应的查询结果;所述等待队列中的待处理请求为加锁失败的请求。
第三方面,本申请提供一种计算机可读的存储介质,所述计算机可读的存储介质包括存储的程序,其中,所述程序运行时执行如第一方面任一项所述的方法。
第四方面,本申请提供一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行如第一方面任一项所述的方法。
本发明提供一种数据查询方法、装置、存储介质及电子装置,所述方法包括:确定待处理请求,按照加锁规则根据查询参数对所述待处理请求加锁;确定多个待处理请求中持有锁的至少一个第一待处理请求,从数据库中获取与所述查询参数对应的查询结果,将所述查询结果存储到缓存中,并释放所述第一待处理请求对锁的控制权;对等待队列中待处理请求进行加锁,确定持有锁的第二待处理请求,从缓存中查询与所述第二待处理请求对应的查询结果;所述方法通过在对查询参数进行加锁后,先从缓存中查询,避免所有请求同时访问数据库,降低了数据库的压力,缩短了服务端响应的时间,提高了服务端的性能。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是根据本申请实施例的一种智能设备的交互方法的硬件环境示意图;
图2是根据本申请实施例的一种数据查询方法的流程示意图;
图3是根据本申请实施例的另一种数据查询方法的流程示意图;
图4是根据本申请实施例的一种数据查询装置的结构示意图;
图5是根据本申请实施例的一种电子装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本申请实施例的一个方面,提供了一种数据查询方法。可选地,在本实施例中,上述数据查询方法可以应用于如图1所示的由用户终端101和服务端102和数据库103所构成的系统。如图1所示,服务端102通过网络与终端设备101进行连接,可用于为终端设备或终端设备101上安装的客户端提供服务(如应用服务等),可在服务端102上或独立于服务端102设置数据库,用于为服务端102提供数据存储服务。示例性的,终端设备101可以向服务端102发送请求信息,服务端102在接收到请求信息后从缓存中查询是否存在结果数据,当不存在时,会通过数据库103查询,将查询的结果数据返回给对应的终端设备101。
上述网络可以包括但不限于以下至少之一:有线网络,无线网络。上述有线网络可以包括但不限于以下至少之一:广域网,城域网,局域网,上述无线网络可以包括但不限于以下至少之一:WIFI(Wireless Fidelity,无线保真),蓝牙。终端设备101可以并不限定于为PC、手机、平板电脑、智能家居设备等。
但是,当大量用户同时向服务端发送请求信息时,若服务端的缓存中不存在对应的结果数据时,需要访问数据库,若访问数据库的请求量过大将会导致系统无法处理而崩溃。
基于上述问题,本申请实施例提供一种数据查询方法,通过为请求中的查询参数加锁的方式确定数据库处理的请求,通过服务端获取到结果数据后,将结果数据存储到缓存中,在处理等待队列中获取锁的请求时,可以先从缓存中查询结果数据,避免直接访问数据库,降低了数据库的压力,缩短了服务端响应的时间,提高了服务端的性能。
下面结合附图,对本申请的一些实施方式作详细说明。在各实施例之间不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。另外,下述各方法实施例中的步骤时序仅为一种举例,而非严格限定。
图2是根据本申请实施例的一种数据查询方法的流程示意图。所述方法的执行主体可以为服务端,如应用服务端,所述服务端可以通过软件、硬件或者软硬件结合的方式实现。如图2所示,所述方法包括:
步骤S201、确定待处理请求,按照加锁规则根据查询参数对所述待处理请求加锁;所述加锁规则表示当多个请求对应的查询参数相同时,所述多个请求中的一个请求获取锁的控制权,其余请求确定为加锁失败的请求。
服务端接收一个或多个用户发送的请求,请求的个数为N,N大于等于1。其中,用户发送的请求中包含查询参数。示例性的,当用户需要查询某一订单的发票数据时,会向开票服务端发送请求,在请求中包含订单号等查询参数。以及,当某一商品做活动时,用户会向服务端发送请求,请求中包含与商品对应的查询参数。
在接收到用户发送的请求后,可以先根据各个请求的查询参数从缓存中获取查询结果,当缓存中不存在某一请求的查询结果时,将该请求确定为待处理请求。示例性的,当接收到5个请求,在通过缓存获取查询结果时,未获取4个请求的查询结果,则将该4个请求确定为待处理请求。若可以从缓存中获取查询结果,则将查询结果返回给用户对应的终端设备,以供用户查看。
在确定待处理请求后,可以根据查询参数对待处理请求进行加锁。其中,锁是协调多个使用方互斥的使用某一公共资源时所记录的一个标记。具体的,可以根据加锁规则对查询参数进行加锁。
其中,加锁规则为当多个待处理请求中每一请求对应的查询参数均不同时,可以对多个查询参数分别加锁成功;当存在查询参数相同的多个待处理请求时,仅有一个待处理请求获取锁的控制权,其余请求均为尝试过加锁,但加锁失败的请求。
示例性的,当同时接收到待处理请求1、待处理请求2和待处理请求3时,若待处理请求1和待处理请求2的查询参数相同,且与待处理请求3的查询参数不同时,可以将待处理请求3确定为持有锁的请求,且还可以确定待处理请求1和待处理请求2的接收时间,将接收时间较早的待处理请求1确定为另一持有锁的请求,将待处理请求2确定为加锁失败的请求。
其中,加锁的过程为:生成与查询参数对应的标记,并将标记存储在缓存中,表示对应的请求持有锁。
步骤S202、确定多个待处理请求中持有锁的至少一个第一待处理请求,从数据库中获取与所述查询参数对应的查询结果,将所述查询结果存储到缓存中,并释放所述第一待处理请求对锁的控制权。
在加锁处理后,可以确定持有锁的至少一个第一待处理请求,并从数据库中查询与至少一个第一待处理请求对应的查询结果。其中,数据库在处理持有锁的多个第一待处理请求时,会根据接收的第一待处理请求的时间顺序进行查询。针对每一第一待处理请求,当从数据库中获取查询结果后,可以将查询结果存储到缓存中。在进行查询时,可以根据查询参数从数据库获取查询结果。例如,在获取发票数据时,可以根据订单号进行查询。
在获取查询结果后,表示对该请求处理完毕,可以释放该第一待处理请求对锁的控制权。其中,释放锁的控制权是指在缓存中删除与所述第一待处理请求的查询参数对应的标记,以使其余待处理请求可以竞争该锁的控制权。
当在获取到与第一待处理请求对应的查询结果后立即主动释放第一待处理请求对锁的控制权,为等待队列中的请求缩短了等待时间。
步骤S203、对等待队列中待处理请求进行加锁,确定持有锁的第二待处理请求,从缓存中查询与所述第二待处理请求对应的查询结果;所述等待队列中的待处理请求为加锁失败的请求。
对于待处理请求中未持有锁的请求可以存储到等待队列中。其中,当一些请求被处理后,会释放锁的控制权,此时,可以根据查询参数对等待队列中的待处理请求进行加锁,以确定服务端要处理的下一待处理请求。
其中,等待队列中存储的一部分待处理请求的查询参数与首次加锁成功的请求的查询参数是相同的。例如,当某一用户多次向开票服务端发送请求,或者,多个用户查询同一订单号的发票数据,则在首次加锁时会使查询参数相同的多个请求中的一个请求持有锁。由于从数据库查询到结果数据时会存储到缓存中,因此,等待队列中的某一待处理请求持有锁后,对于持有锁的第二待处理请求,可以先从缓存中查询是否存在与该请求对应的查询结果。当查询结果为存在结果数据时,可以将结果数据返回给用户。
示例性的,当1000个待处理请求的查询参数相同时,当其中一个待处理请求加锁后,并从数据库获取到查询结果以及存储到缓存中后,针对等待队列中其余999个待处理请求,服务端可以直接从缓存中获取查询结果,不需要针对每一请求都从数据库获取查询结果,当不采用上述方法时,则其余999个待处理请求,会直接从数据库查询,而数据库的查询时间较长,因此,本申请的方案可以实现缩短响应时间,降低数据库压力。
综上,本申请实施例提供的数据查询方法,通过确定待处理请求,按照加锁规则根据查询参数对所述待处理请求加锁;所述加锁规则表示当多个请求对应的查询参数相同时,所述多个请求中的一个请求获取锁的控制权,其余请求确定为加锁失败的请求;确定多个待处理请求中持有锁的至少一个第一待处理请求,从数据库中获取与所述查询参数对应的查询结果,将所述查询结果存储到缓存中,并释放所述第一待处理请求对锁的控制权;对等待队列中待处理请求进行加锁,确定持有锁的第二待处理请求,从缓存中查询与所述第二待处理请求对应的查询结果;所述等待队列中的待处理请求为加锁失败的请求,所述方法对于等待队列中持有锁的请求,在查询数据库之前先从缓存中查询,避免所有请求同时访问数据库,降低了数据库的压力,缩短了服务端响应的时间,提高了服务端的性能。
图3是根据本申请实施例的另一种数据查询方法的流程示意图。如图3所示,所述方法包括:
步骤S301、使用请求中的查询参数从缓存中进行数据查询;
步骤S302、判断查询结果是否有数据;当有数据时,执行步骤S314;当无数据时,执行步骤S303;
步骤S303、使用查询参数加锁;
步骤S304、针对请求判断是否持有锁;若是,则执行步骤S305;若否,则执行步骤S309;
步骤S305、使用查询参数从缓存中进行数据查询;
步骤S306、判断查询结果是否有数据;当无数据时,执行步骤S307;当有数据时,执行步骤S308;
步骤S307、从数据库查询,并将结果数据存储到缓存;
步骤S308、释放锁;释放锁后执行步骤S310以及步骤S314;
步骤S309、其他请求正在持有锁,当前请求加入等待队列;
步骤S310、对等待队列中的请求对应的查询参数加锁;
步骤S311、请求等待是否超时,若超时,执行步骤S312;若未超时,执行步骤S313;
步骤S312、提示用户请求失败;
步骤S313、继续在等待队列中排队;
步骤S314、将数据返回给用户。
下面对上述各个步骤进行详细说明。
可选的,从缓存中查询与所述第二待处理请求对应的查询结果,包括:
当所述缓存中不存在所述查询结果时,从数据库中获取对应的查询结果;当获取所述查询结果后,将所述查询结果存储到缓存中,并释放所述第二待处理请求对锁的控制权。
其中,针对第二待处理请求,可以先从缓存中查询是否存在查询结果,当缓存中存在所述查询结果时,释放所述第二待处理请求对锁的控制权。
当缓存中不存在对应的查询结果时,则继续根据查询参数从数据库进行查询。当从数据库中获取查询结果时,则继续将查询结果存储到缓存中,并释放对锁的控制权。当未获取查询结果时,也执行释放第二待处理请求对锁的控制权的步骤,将未获取查询结果这一信息返回给用户。
通过上述步骤,若从缓存中获取不到查询结果时,再从数据库中查询,保证当数据库中存在与该请求对应的查询数据时,可以成功获取查询数据,同时还能避免数据库的压力较大的问题。
可选的,所述对等待队列中待处理请求进行加锁,包括:确定与释放锁的控制权的第一待处理请求对应的目标查询参数;确定所述等待队列中的第二待处理请求;所述第二待处理请求的查询参与所述目标查询参数相同;按照加锁规则根据所述目标查询参数对所述第二待处理请求加锁。
其中,在根据查询参数对等待队列中待处理请求进行加锁时,需要先确定释放锁的控制权的第一待处理请求对应的目标查询参数,即等待队列中查询参数与目标查询参数一致的请求可能持有锁。因此,在确定目标查询参数后,可以获取等待队列中每一请求对应的查询参数,确定查询参数与目标查询参数相同的多个待处理请求,并从确定的待处理请求中确定第二待处理请求。其中,第二待处理请求为加锁的请求,并按照加锁规则根据所述目标查询参数对所述第二待处理请求加锁。
由于等待队列中的请求较多,若每次只能按顺序将位于头部位置的请求持有锁,则需要等待对应的第一待处理请求释放锁,该过程可能会造成等待队列中请求持有锁的等待时间较长,因此考虑第一待处理请求释放锁后即可使等待队列中的请求持有锁。具体的,可以确定释放锁的第一待处理请求对应的目标查询参数,从等待队列中选择与该参数对应的请求,以实现第一待处理请求在释放锁后,即可使等待队列中具有相同目标查询参数的一个待处理请求持有锁。
通过上述步骤能够对与释放锁的请求的查询参数的待处理请求进行加锁处理,无需按出队顺序加锁,提高处理效率。
可选的,确定所述等待队列中的第二待处理请求,包括:
当所述等待队列中存在多个查询参数与所述目标查询参数相同的待处理请求时,确定各个待处理请求在等待队列中的位置;根据所述位置将距离所述等待队列的头部位置最近的请求确定为第二待处理请求。
其中,存在多个查询参数与所述目标查询参数相同的待处理请求时,即符合加锁条件的待处理请求,需要从中选择一个待处理请求作为第二待处理请求。
为了优先处理接收时间较早的待处理请求,可以确定各个待处理请求在等待队列中的位置,位置越靠近队列的头部位置,则待处理请求的接收时间越早。因此,可以确定每一符合条件的待处理请求的位置,位置为距离等待队列的头部位置的距离。从而根据距离确定第二待处理请求,也就是将距离最短时对应的待处理请求确定为第二待处理请求。
通过上述步骤能够优先处理接收时间较早的待处理请求,避免用户等待时间较长,提高用户的体验。
可选的,按照加锁规则根据所述目标查询参数对所述第二待处理请求加锁,包括:
调整所述第二待处理请求的位置为头部位置;将位于头部位置的请求从等待队列中出队,并根据所述目标查询参数进行加锁,以使从所述等待队列中出队的第二待处理请求持有锁。
在确定第二待处理请求后,确定是否需要调整该请求的位置,若该请求在等待队列中的位置为头部位置,则无需调整该请求的位置;若该请求在等待队列中的位置不是头部位置,则需要将该请求的位置进行调整。在进行调整的,可以采用函数将队列中的每一请求按顺序出队,再将需调整位置的请求入队为头部位置,将其余请求按后出先入的方式入队。
在将第二待处理请求调整为头部位置后,可以将该头部位置的请求从等待队列中出队,并根据目标查询参数对该第二待处理请求进行加锁。
通过调整等待队列中各个请求的位置,可以实现将查询参数与目标查询参数对应的请求持有锁。
可选的,所述方法还包括:针对所述等待队列中的每一待处理请求,判断对应的等待时长是否大于预设时长;若大于,确定对应的待处理请求超时,并向对应的用户发送请求失败的信息。
此外,针对等待队列中的待处理请求,还需要判断每一待处理请求的等待时长,判断每一等待时长是否大于预设时长,若大于预设时长,则表示距离用户发送请求的时间较长,可以向用户发送请求失败的信息,并删除等待队列中等待时长大于预设时长的请求,避免用户长时间接收不到服务端返回的信息,提升用户的体验。若小于预设时长,则表示距离用户发送请求的时间较短,可以继续在等待队列中排队。
通过根据等待队列中请求的等待时长来删除请求或不删除请求,可以对等待队列中的请求进行操作,避免等待超时的请求继续在等待队列中存储,减少服务端需要处理的请求数量。
可选的,将所述查询结果存储到缓存中,包括:
计算与所述查询结果对应的请求的接收次数,根据所述接收次数确定所述查询结果对应的有效时间;所述有效时长与所述接收次数成正相关;将所述查询结果和对应的有效时间存储到缓存中;所述有效时间表示所述查询结果在所述缓存中的存储时长。
其中,在从数据库中获取对应的查询结果后,可以将查询结果存储到缓存中,当后续有请求再次获取该查询结果时,可以直接从缓存中获取该结果。具体的,在将查询结果存储时,可以将查询结果和查询参数对应存储。
此外,由于缓存的空间有限,在存储时通过设置每一查询结果对应的有效时间来实现更新缓存中的查询结果,在该有效时间内可以在缓存中获取该查询结果,当超过有效时间后,则将该查询结果从缓存中删除。
每一查询结果对应的有效时间可以不同,当某一查询参数对应的请求次数较多时,则表示获取对应查询结果的需求较大,需要将对应的有效时长的数值设置的较大。
具体的,在获取到查询结果后,可以根据最近预设时间段内接收到的请求中与该查询结果对应的请求的接收次数,并根据接收次数确定有效时长,当接收次数越大时,则有效时长越长,当接收次数越小时,则有效时长越短。
在确定有效时长后,可以将查询结果和有效时长对应存储在缓存中,具体的,可以以倒计时的形式进行存储,当倒计时为0时,删除缓存中存储的该查询结果。
通过根据查询次数为查询结果设置有效时长,可以适应性的为每一查询结果设置合适的有效时长,以实现在缓存中存储用户可能请求的数据,进一步缓解数据库的访问压力。
对应于上述方法,本申请实施例还提供一种数据查询装置,图4是根据本申请实施例的一种数据查询装置的结构示意图;如图4所示,所述装置包括:
确定模块401,用于确定待处理请求,按照加锁规则根据查询参数对所述待处理请求加锁;所述加锁规则表示当多个请求对应的查询参数相同时,所述多个请求中的一个请求获取锁的控制权,其余请求确定为加锁失败的请求;
第一处理模块402,用于确定多个待处理请求中持有锁的至少一个第一待处理请求,从数据库中获取与所述查询参数对应的查询结果,将所述查询结果存储到缓存中,并释放所述第一待处理请求对锁的控制权;
第二处理模块403,用于对等待队列中待处理请求进行加锁,确定持有锁的第二待处理请求,从缓存中查询与所述第二待处理请求对应的查询结果;所述等待队列中的待处理请求为加锁失败的请求。
可选的,所述第二处理模块403从缓存中查询与所述第二待处理请求对应的查询结果时,具体用于:
当所述缓存中不存在所述查询结果时,从数据库中获取对应的查询结果;
当获取所述查询结果后,将所述查询结果存储到缓存中,并释放所述第二待处理请求对锁的控制权。
可选的,所述第二处理模块403对等待队列中待处理请求进行加锁时,具体用于:
确定与释放锁的控制权的第一待处理请求对应的目标查询参数;
确定所述等待队列中的第二待处理请求;所述第二待处理请求的查询参与所述目标查询参数相同;
按照加锁规则根据所述目标查询参数对所述第二待处理请求加锁。
可选的,所述第二处理模块403确定所述等待队列中的第二待处理请求时,具体用于:
当所述等待队列中存在多个查询参数与所述目标查询参数相同的待处理请求时,确定各个待处理请求在等待队列中的位置;
根据所述位置将距离所述等待队列的头部位置最近的请求确定为第二待处理请求。
可选的,所述第二处理模块403按照加锁规则根据所述目标查询参数对所述第二待处理请求加锁时,具体用于:
调整所述第二待处理请求的位置为头部位置;
将位于头部位置的请求从等待队列中出队,并根据所述目标查询参数进行加锁,以使从所述等待队列中出队的第二待处理请求持有锁。
可选的,所述装置还包括判断模块,用于:
针对所述等待队列中的每一待处理请求,判断对应的等待时长是否大于预设时长;
若大于,确定对应的待处理请求超时,并向对应的用户发送请求失败的信息。
可选的,所述第一处理模块402在将所述查询结果存储到缓存中时,具体用于:
计算与所述查询结果对应的请求的接收次数,根据所述接收次数确定所述查询结果对应的有效时间;所述有效时长与所述接收次数成正相关;
将所述查询结果和对应的有效时间存储到缓存中;所述有效时间表示所述查询结果在所述缓存中的存储时长。
本申请实施例提供的装置的具体实现原理和技术效果可以参见前述实施例,此处不再赘述。
图5是根据本申请实施例的一种电子装置的结构示意图。如图5所示,本实施例的电子装置可以包括:
存储器501和处理器502,所述存储器501中存储有计算机程序,所述处理器502被设置为通过所述计算机程序执行如上述任一实施例所述的方法。
可选地,存储器501既可以是独立的,也可以跟处理器502集成在一起。
本实施例提供的电子设备的实现原理和技术效果可以参见前述各实施例,此处不再赘述。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现前述任一实施例所述的方法。
本申请实施例还提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现前述任一实施例所述的方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本申请各个实施例所述方法的部分步骤。
应理解,上述处理器可以是中央处理单元(Central Processing Unit,简称CPU),还可以是其它通用处理器、数字信号处理器(Digital Signal Processor,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合申请所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。存储器可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器,还可以为U盘、移动硬盘、只读存储器、磁盘或光盘等。
上述存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。
一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于专用集成电路(Application Specific Integrated Circuits,简称ASIC)中。当然,处理器和存储介质也可以作为分立组件存在于电子设备或主控设备中。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例所述的方法。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (10)
1.一种数据查询方法,其特征在于,包括:
确定待处理请求,按照加锁规则根据查询参数对所述待处理请求加锁;所述加锁规则表示当多个请求对应的查询参数相同时,所述多个请求中的一个请求获取锁的控制权,其余请求确定为加锁失败的请求;
确定多个待处理请求中持有锁的至少一个第一待处理请求,从数据库中获取与所述查询参数对应的查询结果,将所述查询结果存储到缓存中,并释放所述第一待处理请求对锁的控制权;
对等待队列中待处理请求进行加锁,确定持有锁的第二待处理请求,从缓存中查询与所述第二待处理请求对应的查询结果;所述等待队列中的待处理请求为加锁失败的请求。
2.根据权利要求1所述的方法,其特征在于,从缓存中查询与所述第二待处理请求对应的查询结果,包括:
当所述缓存中不存在所述查询结果时,从数据库中获取对应的查询结果;
当获取所述查询结果后,将所述查询结果存储到缓存中,并释放所述第二待处理请求对锁的控制权。
3.根据权利要求1所述的方法,其特征在于,所述对等待队列中待处理请求进行加锁,包括:
确定与释放锁的控制权的第一待处理请求对应的目标查询参数;
确定所述等待队列中的第二待处理请求;所述第二待处理请求的查询参与所述目标查询参数相同;
按照加锁规则根据所述目标查询参数对所述第二待处理请求加锁。
4.根据权利要求3所述的方法,其特征在于,确定所述等待队列中的第二待处理请求,包括:
当所述等待队列中存在多个查询参数与所述目标查询参数相同的待处理请求时,确定各个待处理请求在等待队列中的位置;
根据所述位置将距离所述等待队列的头部位置最近的请求确定为第二待处理请求。
5.根据权利要求3所述的方法,其特征在于,按照加锁规则根据所述目标查询参数对所述第二待处理请求加锁,包括:
调整所述第二待处理请求的位置为头部位置;
将位于头部位置的请求从等待队列中出队,并根据所述目标查询参数进行加锁,以使从所述等待队列中出队的第二待处理请求持有锁。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
针对所述等待队列中的每一待处理请求,判断对应的等待时长是否大于预设时长;
若大于,确定对应的待处理请求超时,并向对应的用户发送请求失败的信息。
7.根据权利要求1-6任一项所述的方法,其特征在于,将所述查询结果存储到缓存中,包括:
计算与所述查询结果对应的请求的接收次数,根据所述接收次数确定所述查询结果对应的有效时间;所述有效时长与所述接收次数成正相关;
将所述查询结果和对应的有效时间存储到缓存中;所述有效时间表示所述查询结果在所述缓存中的存储时长。
8.一种数据查询装置,其特征在于,包括:
确定模块,用于确定待处理请求,按照加锁规则对每一待处理请求对应的查询参数加锁;所述加锁规则表示当多个请求对应的查询参数不同时,所述多个请求可以分别获取锁的控制权;
第一处理模块,用于确定多个待处理请求中持有锁的至少一个第一待处理请求,从数据库中获取与所述查询参数对应的查询结果,将所述查询结果存储到缓存中,并释放所述第一待处理请求对锁的控制权;
第二处理模块,用于对等待队列中待处理请求进行加锁,确定持有锁的第二待处理请求,从缓存中查询与所述第二待处理请求对应的查询结果;所述等待队列中的待处理请求为加锁失败的请求。
9.一种计算机可读的存储介质,其特征在于,所述计算机可读的存储介质包括存储的程序,其中,所述程序运行时执行权利要求1至7中任一项所述的方法。
10.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行权利要求1至7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210909911.0A CN115391634A (zh) | 2022-07-29 | 2022-07-29 | 数据查询方法、装置、存储介质及电子装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210909911.0A CN115391634A (zh) | 2022-07-29 | 2022-07-29 | 数据查询方法、装置、存储介质及电子装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115391634A true CN115391634A (zh) | 2022-11-25 |
Family
ID=84118141
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210909911.0A Pending CN115391634A (zh) | 2022-07-29 | 2022-07-29 | 数据查询方法、装置、存储介质及电子装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115391634A (zh) |
-
2022
- 2022-07-29 CN CN202210909911.0A patent/CN115391634A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110032438B (zh) | 延时任务执行方法、装置及电子设备 | |
US11159649B2 (en) | Systems and methods of rate limiting for a representational state transfer (REST) application programming interface (API) | |
US10225145B2 (en) | Method and device for updating client | |
CN110162529B (zh) | 一种数据处理方法、业务服务器及数据处理系统 | |
CN109842610B (zh) | 接口请求处理方法、装置、计算机设备及存储介质 | |
CN107885671B (zh) | 一种非易失性内存的持久化方法和计算设备 | |
CN107026879B (zh) | 一种数据缓存方法及后台应用系统 | |
CN112104731B (zh) | 请求处理方法、装置、电子设备和存储介质 | |
CN114244624A (zh) | 流量控制方法及装置、设备、存储介质 | |
CN110852603B (zh) | 高吞吐量的风控数据处理方法、装置、设备及存储介质 | |
CN111355765B (zh) | 一种网络请求的处理、发送方法及装置 | |
CN110780944B (zh) | 一种应用权限的启动方法、设备及机器可读存储介质 | |
CN115391634A (zh) | 数据查询方法、装置、存储介质及电子装置 | |
CN111367694A (zh) | 事件处理方法、服务器及计算机存储介质 | |
CN110765125B (zh) | 一种存储数据的方法及装置 | |
CN116633616A (zh) | 数据访问方法、系统、设备及存储介质 | |
CN112950370B (zh) | 业务处理方法、装置、设备及存储介质 | |
CN110930163A (zh) | 一种房源委托业务的实现方法、系统及存储介质 | |
CN107704596B (zh) | 一种读取文件的方法、装置及设备 | |
KR101674294B1 (ko) | 임의 접근 및 상태 접근이 가능한 자료구조 운용장치 및 그 운용 방법 | |
CN114691175A (zh) | 一种应用更新方法、装置和系统 | |
CN112995982B (zh) | 一种调度云sim卡的方法、装置、服务器和存储介质 | |
CN111752919A (zh) | 一种数据写入方法、数据读取方法及装置 | |
CN113704274B (zh) | 一种数据的读取方法及电子设备 | |
CN109308653B (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 |