CN114138840A - 数据查询方法、装置、设备及存储介质 - Google Patents
数据查询方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN114138840A CN114138840A CN202111491266.7A CN202111491266A CN114138840A CN 114138840 A CN114138840 A CN 114138840A CN 202111491266 A CN202111491266 A CN 202111491266A CN 114138840 A CN114138840 A CN 114138840A
- Authority
- CN
- China
- Prior art keywords
- cache
- data
- region
- query
- type
- 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 72
- 230000014759 maintenance of location Effects 0.000 claims description 104
- 238000004590 computer program Methods 0.000 claims description 10
- 230000008569 process Effects 0.000 abstract description 21
- 230000000875 corresponding effect Effects 0.000 description 27
- 238000010586 diagram Methods 0.000 description 11
- 238000012545 processing Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 5
- 230000005012 migration Effects 0.000 description 4
- 238000013508 migration Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 230000000717 retained 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/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
-
- 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/248—Presentation of 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/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
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (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
本申请提供一种数据查询方法、装置、设备及存储介质。涉及数据访问技术领域。该数据查询方法包括:接收数据查询请求;数据查询请求包括待查询的目标数据标识;根据目标数据标识,在缓存的缓存数据中进行数据查询;若在缓存中查询到目标数据标识对应的第一目标数据、且第一目标数据所在的目标缓存区为第一类缓存区,则输出第一目标数据;第一类缓存区的缓存数据采用异步的方式刷新。本申请的方法通过异步刷新的方式刷新第一类缓存区的缓存数据,能够节省数据查询过程中对第一类缓存区进行过期判断的时间,从而提高数据查询效率。
Description
技术领域
本申请涉及数据访问技术,尤其涉及一种数据查询方法、装置、设备及存储介质。
背景技术
互联网为用户提供了丰富的信息,通过查询条件能够在信息***中进行数据查询,得到感兴趣的信息。
目前,在信息***中进行数据查询,是在接收到用户发起的数据查询请求时,从缓存中进行数据查询,若从缓存中查询到结果数据,则根据该结果数据的缓存有效时间判断该结果数据是否过期,若判断该结果数据过期,此时需要从数据库查询新的结果数据,并根据新的结果数据对缓存中的结果数据进行更新,以便下次直接从缓存中进行数据查询。
上述数据查询过程中需要进行过期判断,这会延长数据查询过程的耗时,导致数据查询效率较低。
发明内容
本申请提供一种数据查询方法、装置、设备及存储介质,用以解决数据查询效率较低的问题。
第一方面,本申请提供一种数据查询方法,包括:接收数据查询请求;所述数据查询请求包括待查询的目标数据标识;根据所述目标数据标识,在缓存的缓存数据中进行数据查询;若在缓存中查询到所述目标数据标识对应的第一目标数据、且所述第一目标数据所在的目标缓存区为第一类缓存区,则输出所述第一目标数据;所述第一类缓存区的缓存数据采用异步的方式刷新。
第二方面,本申请提供一种数据查询装置,包括:接收模块,用于接收数据查询请求;所述数据查询请求包括待查询的目标数据标识;查询模块,用于根据所述目标数据标识,在缓存的缓存数据中进行数据查询;输出模块,用于在缓存中查询到所述目标数据标识对应的第一目标数据、且所述第一目标数据所在的目标缓存区为第一类缓存区时,则输出所述第一目标数据;所述第一类缓存区的缓存数据采用异步的方式刷新。
第三方面,本申请提供一种电子设备,包括:处理器,以及与所述处理器通信连接的存储器;所述存储器存储计算机执行指令;所述处理器执行所述存储器存储的计算机执行指令,以实现如第一方面所述的方法。
第四方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如第一方面所述的方法。
第五方面,本申请提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现第一方面所述的方法。
本申请提供的数据查询方法、装置、设备及存储介质,通过接收数据查询请求,数据查询请求包括待查询的目标数据标识;并根据目标数据标识,在缓存的缓存数据中进行数据查询;若在缓存中查询到目标数据标识对应的第一目标数据、且第一目标数据所在的目标缓存区为第一类缓存区,则输出第一目标数据;第一类缓存区的缓存数据采用异步的方式刷新。由于在缓存中查询到目标数据标识对应的第一目标数据、且第一目标数据所在的目标缓存区为第一类缓存区,则输出第一目标数据;第一类缓存区的缓存数据采用异步的方式刷新,因此,不需要在数据查询过程中对第一类缓存区进行过期判断,进而能够减少数据查询时间,提高数据查询效率。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为现有技术的数据查询的应用场景图;
图2为本申请实施例提供的应用场景图;
图3为本申请实施例提供的缓存单元的结构示意图;
图4为本申请实施例提供的数据查询方法的流程图一;
图5为本申请实施例提供的数据查询方法的流程图二;
图6为本申请实施例提供的异步刷新的控制逻辑图;
图7为本申请实施例提供的数据查询方法的流程图三;
图8为本申请实施例提供的数据查询装置的结构示意图;
图9为本申请实施例提供的电子设备的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
互联网应用可以为用户提供便利的数据查询功能,基于数据查询功能用户能够获得大量互联网信息。例如,针对节假日热门航线的机票、火车票信息、社会热点事件等进行数据查询。在一些查询条件比较热门的场景中,短时间内会产生较大的查询量,这会给信息***带来较大的压力。由于这些热门查询请求的查询条件往往相同,因此现有的方案针对这类热门查询请求设置缓存,并将热门查询请求的查询数据存储在缓存中,从而直接从缓存中进行数据查询,减轻信息***的压力,并且提高查询响应速度。下面将结合附图对现有技术的数据查询过程进行介绍:
图1为现有技术的数据查询的应用场景图。如图1所示,该应用场景包括:终端设备11、缓存服务器12和数据库服务器13;
其中,终端设备11包括智能手机、平板电脑、笔记本电脑、台式电脑等具有信息搜索功能的设备。
缓存服务器12中设置有缓存,数据库服务器13中设置有数据库。
目前,基于缓存的数据查询方案包括如下步骤:
步骤1、缓存服务器接收数据查询请求;
步骤2、缓存服务器从缓存中进行数据查询;
步骤3、若在缓存中未查询到结果数据,即未命中缓存,则缓存服务器从数据库进行数据查询,并将从数据库中查询到的结果数据在缓存中进行存储,以及返回结果数据至终端设备。
步骤4、若在缓存中查询到结果数据,即命中缓存,则缓存服务器根据缓存中存储的结果数据的缓存有效时间判断该结果数据是否过期;
步骤5、若缓存中存储的结果数据过期,则缓存服务器从数据库进行数据查询,并根据从数据库中查询到的新的结果数据对缓存进行更新,再返回新的结果数据至终端设备。
步骤6、若缓存中存储的结果数据未过期,则直接返回结果数据至终端设备。
上述判断缓存中存储的结果数据是否过期,以及步骤5的若缓存中存储的结果数据过期,则从数据库进行数据查询,并根据从数据库中查询到的新的结果数据对缓存进行更新,可以理解为是缓存刷新操作,即在数据查询时进行实时地缓存刷新操作。而在数据查询时进行实时地缓存刷新操作在查询并发量大并且查询成本(指从数据库中进行数据查询所耗费的时间)高的场景中,容易出现缓存过期时导致大量线程瞬间对同一数据进行更新处理,大量查询请求同时查询数据库或者处于等待状态,查询耗时较长,最终导致数据查询的整体响应时间出现较大波动,影响用户体验。
针对上述技术问题,本申请提出如下技术构思:通过在缓存中根据目标数据标识进行数据查询时,若在缓存中查询到目标数据标识对应的第一目标数据、且第一目标数据所在的目标缓存区为第一类缓存区,则直接输出第一目标数据;且第一类缓存区的缓存数据采用异步的方式刷新。通过对第一类缓存区在数据查询过程中采用异步刷新的方式,能够减少数据查询的耗时,提高数据查询效率。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
图2为本申请实施例提供的应用场景图。如图2所示,该应用场景包括:终端设备21、应用服务器22和数据库服务器23;
其中,终端设备21包括智能手机、平板电脑、笔记本电脑、台式电脑等具有信息搜索功能的设备。
应用服务器22中设置有缓存,数据库服务器23中设置有数据库。
其中,数据库服务器23可以是单独的一台服务器,也可以是包括多台服务器的服务器集群。
作为一种可选的实施方式,图2中的应用服务器也可以是缓存服务器,而缓存服务器可以是单独的一台服务器,也可以是包括多台服务器的服务器集群。
缓存中用于缓存数据的整个缓存区域称为缓存区,缓存区内存储的元数据为缓存单元,缓存单元的结构如下介绍:
图3为本申请实施例提供的缓存单元的结构示意图。如图3所示,缓存单元采用键值对(KEY-VALUE)的形式进行数据缓存。KEY为索引号,VALUE中存储缓存数据和缓存数据的缓存信息。每个键值对用于存储一条缓存数据,每个缓存单元中缓存数据的大小可以相同,也可以不同,而其他部分,例如刷新时间、查询命中次数、查询成本和留存值的所占用的缓存的大小相同,也就是说每个缓存单元的大小可以相同也可以不同。
缓存数据的缓存信息包括刷新时间、命中次数、查询成本和留存值。在业务***中,缓存数据也可以称为业务数据。以订单为例,KEY可以为订单编号等能够唯一标识该订单的信息,VALUE中的缓存数据可以为该订单编号对应的订单的订单状态,订单状态包括已成交、未成交、已发货、未发货等。订单数据在缓存中的存储结构具体如表1所示:
表1 订单数据的存储结构
其中,刷新时间为缓存创建或最近一次刷新的时候对应的时间戳,每对缓存数据进行一次刷新操作,则更新一次刷新时间。
查询命中次数是以刷新时间为起点,截止到当前时间待查询数据在缓存中的查询命中次数。每对缓存进行一次查询,则更新一次命中次数。
查询成本用于表示从数据库中查询待查询数据所耗费的时间。
留存值用于表示缓存数据的缓存值,留存值与缓存值正相关,即留存值越大,缓存值越大,留存值越小,缓存值越小。留存值可以根据如下方法计算得到:
V=Vp/2+a*n/(Tc-Tr)+b*C;
其中,Vp为缓存数据当前的留存值;n为缓存数据在缓存中的查询命中次数,Tc为当前时间,Tr为缓存数据对应的刷新时间,C为缓存数据的查询成本,a和b均为权重,且a+b=1。
其中,应用服务器22中的缓存包括第一类缓存区、第二类缓存区和第三类缓存区;
第一类缓存区用于存储留存值大于或等于预设留存值的缓存数据,留存值是根据缓存数据的查询成本和在缓存中的查询命中次数确定的,缓存数据的查询成本为从数据库查询缓存数据所耗费的时间。对于两个缓存数据而言,在同样的刷新时间和同样的查询命中次数的情况下,查询成本越高,留存值越高,其更加适合存储在第一类缓存区中。其中,第一类缓存区中缓存的缓存数据可以理解为是在缓存中的查询命中概率大于预设概率,且查询成本大于预设查询成本的数据。
第二类缓存区用于存储新添加至缓存的缓存数据。
第三类缓存区用于存储在第二类缓存区222中存储超过预设时间的缓存数据。或者,第三类缓存区用于存储在第一类缓存区中的缓存数据按照留存值从大到小的顺序排序后的前Q个缓存数据。
基于图2和图3,本申请还提出如下数据查询方法。具体的,图4为本申请实施例提供的数据查询方法的流程图一,如图4所示,该数据查询方法包括:
S4001、接收数据查询请求,数据查询请求包括待查询的目标数据标识。
本实施例的方法的执行主体可以是如图2所示的应用服务器。用户通过终端设备可以向应用服务器发送数据查询请求,应用服务器接收终端设备发送的数据查询请求。
示例性地,用户可以通过终端设备提供的搜索框输入搜索条件,以向应用服务器发起数据查询请求。该搜索条件中的关键词即为目标数据标识。
S4002、根据目标数据标识,在缓存的缓存数据中进行数据查询。
具体的,是应用服务器根据目标数据标识,在整个缓存区域,即第一类缓存区、第二类缓存区和第三类缓存区中查询是否存在与目标数据标识对应的缓存数据,若存在与目标数据标识对应的缓存数据,则将与目标数据标识对应的缓存数据确定为目标数据,即在缓存中查询到目标数据。反之,则在缓存中未查询到目标数据。
在用户通过订单编号在缓存中查询订单状态的场景中,订单编号可以理解为目标数据标识,具体的订单状态数据可以理解为目标数据。
在步骤S4002之后,还需要确定是否在缓存中查询到目标数据标识对应的第一目标数据。
S4003、若在缓存中查询到目标数据标识对应的第一目标数据,则确定第一目标数据所在的目标缓存区是否为第一类缓存区。
S4004、若第一目标数据所在的目标缓存区是第一类缓存区,则输出第一目标数据,第一类缓存区的缓存数据采用异步的方式刷新。
本步骤中,输出第一目标数据之后,还需要更新目标数据的查询命中次数。具体的,是将第一类缓存区中第一目标数据的查询命中次数加1,并将第一目标数据返回终端设备。
上述步骤S4003和步骤S4004可以总结为:若在缓存中查询到目标数据标识对应的第一目标数据、且第一目标数据所在的目标缓存区为第一类缓存区,则输出第一目标数据;其中,第一类缓存区的缓存数据采用异步的方式刷新。输出第一目标数据即为将第一目标数据返回至用户的终端设备。具体的异步刷新的实现方式将在后续实施例进行介绍。
仍然以订单状态查询为例,若在第一类缓存区中查询到订单的订单状态,则将第一类缓存区中订单的查询命中次数加1,并将查询到的订单状态返回终端设备。
其中,第一类缓存区,用于存储查询量较大且查询成本高的数据,因此,能够提高在缓存中的查询命中概率,从而减少对数据库的访问。异步刷新包括:将该缓存区中的数据设置为在基于查询请求命中该第一类缓存区后,直接返回在第一类缓存区中查询到的第一目标数据,以及更新第一目标数据在该缓存中的查询命中次数之后则结束,即返回在该缓存区中查询到的第一目标数据,以及更新在该缓存中的查询命中次数之后,不对该缓存区进行刷新操作。
本实施例通过接收数据查询请求,数据查询请求包括待查询的目标数据标识;并根据目标数据标识,在缓存的缓存数据中进行数据查询;若在缓存中查询到目标数据标识对应的第一目标数据、且第一目标数据所在的目标缓存区为第一类缓存区,则输出第一目标数据;第一类缓存区的缓存数据采用异步的方式刷新。由于在缓存中查询到目标数据标识对应的第一目标数据、且第一目标数据所在的目标缓存区为第一类缓存区,则输出第一目标数据;第一类缓存区的缓存数据采用异步的方式刷新,因此,不需要在数据查询过程中对第一类缓存区进行过期判断,进而能够减少数据查询时间,提高数据查询效率。
图5为本申请实施例提供的数据查询方法的流程图二。如图5所示,在S4003之后,本实施例还可以包括如下步骤:
S4005、若第一目标数据所在的目标缓存区非第一类缓存区,则根据第一目标数据的缓存有效时间确定第一目标数据是否过期。
缓存中的缓存数据设置有缓存有效时间,应用服务器在缓存中查询到第一目标数据时,会根据第一目标数据的缓存有效时间、第一目标数据在缓存中的添加时间(即第一目标数据加入缓存时的时间)和当前时间,确定第一目标数据是否过期。若确定第一目标数据过期,则应用服务器将数据查询请求转发至数据库服务器。数据库服务器从数据库获取第二目标数据,并将第二目标数据返回应用服务器。应用服务器根据第二目标数据更新第一目标数据,即使用第二目标数据替换缓存中已过期的第一目标数据。
本实施例中,若在第一类缓存区中查询得到第一目标数据,直接将第一目标数据返回至终端设备并结束。即在第一类缓存区中查询得到第一目标数据之后,不对第一类缓存区中的第一目标数据进行过期判断。而是在非第一类缓存区,即第二类缓存区或第三类缓存区中查询到第一目标数据时,对第一目标数据进行过期判断。
S4006、若确定第一目标数据过期,则根据第一目标数据标识从数据库查询第二目标数据。
S4007、根据第二目标数据,更新第一目标数据和第一目标数据的缓存信息。
仍然以订单查询为例,若目标数据标识为订单状态,订单状态的具体内容为未成交,且缓存有效时间为5分钟。在该5分钟之内,订单***已将数据库中该订单的订单状态更新为已成交。则在未成交的订单状态在第二类缓存区或第三类缓存区中存储超过5分钟之后,应用服务器根据订单的标识从第二类缓存区或第三类缓存区中查询得到订单状态为未成交。而此时数据库中该订单的最新订单状态已更新为已成交。因此,第二类缓存区或第三类缓存区中的第一目标数据已过期,需要从数据库中获取第二目标数据,并使用第二目标数据替换第一目标数据。
应理解,上述示例仅为示例性说明,而在实际中,根据目标数据标识从数据库查询得到的第二目标数据也可能与第一目标数据相同,例如,订单状态未发生变化。而无论订单状态是否发生变化,只要缓存中的第一目标数据已过期,即需要从数据库查询第二目标数据,并使用第二目标数据更新第一目标数据。
S4008、输出第二目标数据。
应理解,步骤S4007和步骤S4008并不限制先后顺序,可以是先执行步骤S4007,再执行步骤S4008,也可以是先执行步骤S4008,再执行步骤S4007,还可以是同时执行步骤S4007和步骤S4008。
在一些实施例中,缓存信息包括查询命中次数,则更新第一目标数据的缓存信息,包括:更新第一目标数据的查询命中次数。可选的,可以是将缓存中第一目标数据的查询命中次数加1。
在另一些实施例中,缓存信息包括查询成本,则更新第一目标数据的缓存信息,包括:
步骤A、获取第二目标数据的查询成本,第二目标数据的查询成本为从数据库查询第二目标数据所耗费的时间。
步骤B、根据第二目标数据的查询成本,对第一目标数据的查询成本进行更新。
若第一目标数据的缓存信息包括查询命中次数和查询成本,则是根据上述更新查询命中次数的实施方式和更新查询成本的实施方式同时更新第一目标数据的查询命中次数和查询成本。
举例来说,第一目标数据的查询成本为t’1,查询命中次数为n,第二目标数据的查询成本为t’2,则是将第一目标数据的查询成本更新为t’2,将n更新为n+1。
表2 第一目标数据的缓存信息
表3 第二目标数据的缓存信息
S4009、若确定第一目标数据未过期,则更新第一目标数据的查询命中次数,并执行步骤S4008,即输出第一目标数据。
可选的,可以是将第一目标数据的查询命中次数加1。仍然以订单为例,若在步骤S4009之前,第一目标数据的缓存信息如表2所示,则经过本步骤更新之后的第一目标数据的缓存信息如表4所示:
表4 第一目标数据的缓存信息
S4010、若在缓存中未查询到第一目标数据,则根据目标数据标识从数据库查询第二目标数据,并执行步骤S4008,即输出第二目标数据。
上述步骤S4001至步骤S4010可以总结为如下四种可选的实施方式:
a1、若在缓存中查询到第一目标数据,且第一目标数据所在的目标缓存区为第一类缓存区,则输出第一目标数据。
a2、若在缓存中查询到第一目标数据,且第一目标数据所在的目标缓存区非第一类缓存区,以及,根据目标数据的缓存有效时间,确定第一目标数据未过期,则输出第一目标数据。
a3、若在缓存中查询到第一目标数据、且第一目标数据所在的目标缓存区非第一类缓存区,以及,根据目标数据的缓存有效时间,确定第一目标数据过期,则根据目标数据标识从数据库查询,得到目标数据标识对应的第二目标数据,并输出第二目标数据。
a4、若在缓存中未查询到目标数据标识对应的数据,则根据目标数据标识从数据库查询,得到目标数据标识对应的第二目标数据,并输出第二目标数据。
需要注意的是,针对上述a1至a3,若在缓存中查询到第一目标数据,还需要更新目标缓存区中第一目标数据的缓存信息。缓存信息包括:查询命中次数、查询成本、留存值和刷新时间;查询成本用于表征从数据库中查询所耗费的时间,留存值用于表征缓存价值;而更新目标缓存区中第一目标数据的缓存信息,包括:
a1-1、若在缓存中查询到第一目标数据,且第一目标数据所在的目标缓存区为第一类缓存区,则更新目标缓存区中第一目标数据的查询命中次数。
其中,a1-1可以理解为是在a1的基础上,还需要更新目标缓存区中第一目标数据的查询命中次数。
a2-1、若在缓存中查询到第一目标数据,且第一目标数据所在的目标缓存区非第一类缓存区,以及,第一目标数据未过期,则更新目标缓存区中第一目标数据的查询命中次数。
其中,a2-1可以理解为是在a2的基础上,还需要更新目标缓存区中第一目标数据的查询命中次数。
a3-1、若在缓存中查询到第一目标数据,且第一目标数据所在的目标缓存区非第一类缓存区,以及,第一目标数据过期,则根据第二目标数据,更新目标缓存区中第一目标数据的所有缓存信息,以及,第一目标数据。
其中,a3-1可以理解为是在a3的基础上,还需要更新目标缓存区中第一目标数据的所有缓存信息,以及,第一目标数据。
而针对上述a4,在缓存中未查询到目标数据标识对应的数据,则根据目标数据标识从数据库查询,得到目标数据标识对应的第二目标数据之后,还需要执行步骤S4011和步骤S4012:
S4011、确定第二类缓存区是否存在剩余缓存空间;第二类缓存区用于存储新添加至缓存的数据。
S4012、若第二类缓存区不存在剩余缓存空间,则结束。
具体的,若在缓存中未查询到目标数据,且第二类缓存区不存在剩余缓存空间,即第二类缓存区的缓存空间已满,则代表整个缓存区域均已满,无法容纳更多缓存数据,则应用服务器中的查询程序会从数据库查询目标数据,并直接返回目标数据。
S4013、若第二类缓存区存在剩余缓存空间,则将第二目标数据和第二目标数据的缓存信息添加至第二类缓存区。
本步骤中第二目标数据的缓存信息包括查询命中次数、查询成本和刷新时间中至少一项。则将第二目标数据的缓存信息添加至第二类缓存区,包括:
步骤b1、记录第二目标数据的查询命中次数。
其中,第二目标数据是首次添加至缓存,经过本步骤之后,第二目标数据的查询命中次数为1。
步骤b2、记录第二目标数据的查询成本。
在步骤b2之前,需要确定第二目标数据的查询成本。具体的,确定第二目标数据的查询成本,包括:获取从数据库查询第二目标数据所耗费的时间。
具体的,在从数据库查询目标数据标识对应的第二目标数据时,该条查询记录中会包括从数据库查询目标数据标识对应的第二目标数据所耗费的时间。因此,可以直接获取从数据库查询目标数据标识对应的第二目标数据的查询记录,并获取从数据库查询第二目标数据所耗费的时间,将从数据库查询第二目标数据所耗费的时间确定为第二目标数据的查询成本。
步骤b3、将第二目标数据在第二类缓存区中的添加时间记录为第二目标数据的刷新时间。
由于第二目标数据是首次添加至缓存,因此,第二目标数据的刷新时间即为第二目标数据首次添加至缓存的添加时间。
步骤b4、记录第二目标数据的留存值。
由于第二目标数据是首次添加至缓存,并且数据查询过程中不需要使用留存值。因此,在本步骤中可以不计算第二目标数据的留存值,直接将第二目标数据的留存值记录为0。第二目标数据的留存值的更新将在异步刷新的过程中执行。
上述实施例可以总结如下:
1)如果缓存未命中,即在整个缓存区域未查询到第一目标数据,并且第二类缓存区已满,则表示整个缓存区域的空间已满,无法容纳更多的缓存数据,查询程序则直接从数据库查询第二目标数据并返回终端设备。
2)如果缓存命中,即在整个缓存区域中查询到第一目标数据,并且命中的缓存区为第一类缓存区,则直接获取第一目标数据并返回至终端设备,无需进行缓存过期判断与缓存刷新操作。
3)如果缓存命中,即在整个缓存区域中查询到第一目标数据,并且命中的缓存区不属于第一类缓存区,则需要判断第一目标数据是否过期,若过期则进行缓存刷新操作。
4)对于缓存的刷新时间字段,如果为新加入缓存的缓存数据,则将该缓存数据的刷新时间记录为该缓存数据添加至第二类缓存区的时间。
5)如果命中缓存,且第二类缓存区未满,则在通过数据库查询第二目标数据时,需要更新缓存中的第一目标数据及第一目标数据的查询成本。
6)只要命中缓存,或者新加入缓存,都需要进行命中次数加1的操作。
在上述实施例中,已介绍为了提高数据查询效率,在数据查询过程中不对第一类缓存区进行过期判断和刷新操作。而为了保证第一类缓存区中缓存数据为最新状态的数据,是采用异步刷新的方式对第一类缓存区进行刷新操作。下面将结合附图对异步刷新进行详细介绍:
图6为本申请实施例提供的数据查询方法的流程图二。如图6所示,该数据查询方法,包括如下步骤:
S6001、接收缓存刷新的触发消息。
可选的,应用服务器中可以设置一定时单元,定时单元通过定时触发的方式向刷新单元发送缓存刷新的触发消息。刷新单元接收定时单元定时发送的缓存刷新的触发消息。该触发消息用于触发刷新单元通过刷新程序对整个缓存区域进行刷新。
S6002、确定缓存刷新时待刷新缓存区是否为第一类缓存区。
本实施例中,缓存的整个缓存区域可以理解为若干个缓存区,每个缓存区对应有缓存区标识,缓存区标识用于标识缓存区是第一类缓存区、第二类缓存区或第三类缓存区。例如,缓存区标识为1,则代表该缓存区为第一类缓存区;缓存区标识为2,则代表该缓存区为第二类缓存区;缓存区标识为3,则代表该缓存区为第三类缓存区。通过对若干个缓存区进行遍历,并根据当前遍历的缓存区的标识,能够确定待刷新缓存区是否为第一类缓存区。
S6003、若缓存刷新时待刷新缓存区是第一类缓存区,则异步刷新待刷新缓存区存储的缓存数据和缓存数据的缓存信息。
其中,步骤S6003中异步刷新的缓存数据的缓存信息包括:查询成本、留存值、刷新时间和查询命中次数:
具体的,异步刷新待刷新缓存区存储的缓存数据和缓存数据的缓存信息,包括:
步骤c1、异步查询数据库,得到新的缓存数据。
可选的,可以是根据待刷新缓存区中存储的缓存数据的标识在数据库中查询新的缓存数据。
步骤c2、根据新的缓存数据,刷新待刷新缓存区中存储的缓存数据。
具体的,是将待刷新缓存区中存储的缓存数据替换为新的缓存数据。
步骤c3、根据新的缓存数据的查询信息,刷新待刷新缓存区存储的缓存数据的缓存信息。
其中,缓存信息包括:查询命中次数、查询成本、留存值、刷新时间;查询成本用于表征从数据库中查询所耗费的时间,留存值用于表征缓存价值。则根据新的缓存数据的查询信息,刷新待刷新缓存区存储的缓存数据的缓存信息,包括:
步骤c31、根据新的缓存数据的查询信息,确定缓存数据刷新后的查询成本。
其中,新的缓存数据的查询信息包括:从数据库查询新的缓存数据所耗费的时间。则根据新的缓存数据的查询信息,确定缓存数据刷新后的查询成本,包括:将从数据库查询新的缓存数据所耗费的时间,确定为缓存数据刷新后的查询成本。
步骤c32、根据缓存数据刷新后的查询成本、刷新前的查询命中次数、刷新前的刷新时间,获取缓存数据刷新后的留存值。
具体的,根据缓存数据刷新后的查询成本、刷新前的查询命中次数、刷新前的刷新时间,获取缓存数据刷新后的留存值,包括:
步骤c321、确定当前时间和缓存数据刷新前的刷新时间的时间差。
步骤c322、根据缓存数据刷新前的查询命中次数除以时间差,得到第一数值;
步骤c323、根据缓存数据刷新前的留存值、第一数值和缓存数据刷新后的查询成本,得到缓存数据刷新后的留存值。
其中,根据缓存数据刷新前的留存值、第一数值与第一权重的乘积、第二权重与缓存数据刷新后的查询成本的乘积,得到缓存数据刷新后的留存值,包括:根据缓存数据刷新前的留存值的二分之一、第一数值与第一权重的乘积、第二权重与缓存数据刷新后的查询成本的乘积之和,得到缓存数据刷新后的留存值。
本实施例中,留存值综合考虑了该条缓存数据的查询命中次数和查询成本。同时,在计算留存值的时候,将当前留存值的一半考虑进来,可使留存值的变化更为平滑,从而避免缓存的抖动,即某些缓存数据过于频繁的被迁移。
步骤c33、使用缓存数据刷新后的查询成本刷新待刷新缓存区存储的缓存数据的查询成本,并使用缓存数据刷新后的留存值,刷新待刷新缓存区存储的缓存数据的留存值。
具体的,是将待刷新缓存区存储的缓存数据的查询成本替换为缓存数据刷新后的查询成本,以及将刷新缓存区存储的缓存数据的留存值替换为缓存数据刷新后的留存值。
步骤c34、刷新待刷新缓存区存储的缓存数据的查询命中次数和刷新时间。
其中,刷新后的查询命中次数,是指将新的缓存数据的查询命中次数清零,即设置为0。而刷新后的刷新时间为对待刷新缓存区存储的缓存数据的刷新时间进行刷新操作的时间。
S6004、若缓存刷新时待刷新缓存区为第二类缓存区或第三类缓存区,则根据缓存数据的查询成本、查询命中次数、刷新时间,获取缓存数据刷新后的留存值;第二类缓存区用于存储新添加至缓存的数据,第三类缓存区用于存储在第一类缓存区中的缓存数据按照留存值从大到小的顺序排序后的前Q个缓存数据,第二类缓存区和第三类缓存区的缓存数据基于缓存有效时间刷新,Q为大于或等于1的整数。
具体的,若缓存刷新时待刷新缓存区为第二类缓存区或第三类缓存区,则根据缓存数据的查询成本、查询命中次数、刷新时间,获取缓存数据刷新后的留存值,包括:
步骤d1、确定当前时间和缓存数据刷新前的刷新时间的时间差。
步骤d2、根据缓存数据刷新前的查询命中次数除以时间差,得到第一数值;
步骤d3、根据缓存数据刷新前的留存值、第一数值和缓存数据刷新后的查询成本,得到缓存数据刷新后的留存值。
其中,根据缓存数据刷新前的留存值、第一数值与第一权重的乘积、第二权重与缓存数据刷新后的查询成本的乘积,得到缓存数据刷新后的留存值,包括:根据缓存数据刷新前的留存值的二分之一、第一数值与第一权重的乘积、第二权重与缓存数据刷新后的查询成本的乘积之和,得到缓存数据刷新后的留存值。
S6005、使用缓存数据刷新后的留存值,刷新待刷新缓存区存储的缓存数据的留存值,并刷新缓存数据的刷新时间和查询命中次数。
具体的,是将待刷新缓存区存储的缓存数据的查询成本替换为缓存数据刷新后的查询成本,以及将刷新缓存区存储的缓存数据的留存值替换为缓存数据刷新后的留存值。
其中,刷新后的查询命中次数,是指将新的缓存数据的查询命中次数清零,即设置为0。而刷新后的刷新时间为对待刷新缓存区存储的缓存数据的刷新时间进行刷新操作的时间。
应理解,针对第一类缓存区、第二类缓存区和第三类缓存区,本实施例中首先计算留存值再更新刷新时间,是因为若先更新刷新时间,再计算留存值,则会导致留存值计算公式:V=Vp/2+a*N/(Tc-Tr)+b*C的等号右边第二项的分母(Tc-Tr)的取值为0,从而使得第二项取值为无穷大,进而导致留存值计算不准确。因此,本实施例中需要先计算留存值,再更新刷新时间。
而针对第二类缓存区,由于其存储的是新添加至缓存的数据,并且记录了刷新时间,为了避免频繁更改刷新时间,还可以在本实施例的异步刷新过程中不对第二类缓存区的缓存数据的刷新时间和查询命中次数进行刷新。
另外,由于在相邻的两次刷新操作的间隔时间内,可能会对第二类缓存区中缓存数据进行数据查询,并且更新该缓存数据的查询命中次数、刷新时间和查询成本,因此,第二类缓存区中缓存数据的留存值可能也会发生变化。而在数据查询过程中,为了节省数据查询时间,并未对第二类缓存区中缓存数据的留存值进行更新,则在本实施例的异步刷新过程中,对第二类缓存区中的缓存数据的留存值进行更新,能够实时确定第二类缓存区中缓存数据的留存值。
本实施例的定时刷新过程中包括三种类型的操作:第一类操作,从数据库查询新的缓存数据,并对缓存中的缓存数据进行更新;第二类操作,计算缓存数据的留存值;第三类操作,将查询命中次数进行清零,并更新缓存数据的刷新时间。其中,针对第一类缓存区,由于在数据查询过程中并未对第一类缓存区中的缓存数据进行过期判断及刷新操作。为了避免第一类缓存区中的缓存数据过期,本实施例通过在定时刷新过程中对第一类缓存区中的缓存数据执行第一类操作,能够保证第一类缓存区中的缓存数据为最新状态的缓存数据,从而为用户提供准确的查询结果。以及,在数据查询过程中第一类缓存区中的缓存数据能够直接使用,从而提高数据查询效率。
可选的,上述的异步刷新过程可以是以守护进程的方式发起,而每轮发起间隔的时间可以根据业务场景和第一类缓存区的存储空间大小确定。
可选的,本实施例还可以采用单线程或多线程并发的方式进行定时刷新,以提高刷新效率。具体的,可以采用多个线程同时对三类缓存区进行定时刷新,即每类缓存区采用一个线程进行定时刷新,而至少两类缓存区可以同时进行定时刷新。
在通过上述实施例对第一类缓存区、第二类缓存区和第三类缓存区中缓存数据的留存值进行更新之后,还可以根据第一类缓存区、第二类缓存区和第三类缓存区中缓存数据的留存值对第一类缓存区、第二类缓存区和第三类缓存区中缓存数据进行调整。下面将具体介绍针对第一类缓存区、第二类缓存区和第三类缓存区中缓存数据的调整过程。
图7为本申请实施例提供的数据查询方法的流程图三。如图7所示,该数据查询方法,还包括:
S7001、按照留存值从大到小的顺序,确定第一类缓存区中前M个缓存数据,以及,第三类缓存区中前N个缓存数据;M和N均为大于或等于0的整数,且M和N不同时为0。
S7002、将前N个缓存数据从第三类缓存区迁移至第一类缓存区。
S7003、将第一类缓存区中除前M个缓存数据之外的缓存数据,从第一类缓存区迁移至第三类缓存区。
示例性地,是将第一类缓存区和第三类缓存区中所有的缓存数据按照留存值从大到小的顺序进行排序,并确定第一类缓存区中前M个缓存数据,以及,第三类缓存区中前N个缓存数据。并将第三类缓存区中前N个缓存数据从第三类缓存区迁移至第一类缓存区,以及,将第一类缓存区中除前M个缓存数据之外的缓存数据,从第一类缓存区迁移至第三类缓存区。
应当理解,M个缓存数据与N个缓存数据的存储空间的累加和为第一类缓存区的最大存储空间。而第一类缓存区中除前M个缓存数据之外的缓存数据与第三类缓存区中除前N个缓存数据之外的缓存数据的存储空间的累加和不大于第三类缓存区的最大存储空间。
上述步骤S7001至步骤S7003可以理解为是将第一类缓存区和第三类缓存区中所有的缓存数据按照留存值从大到小的顺序进行排序,并确定排序结果中前N’个缓存数据,以及将N’个缓存数据存储至第一类缓存区,和将排序结果中N’个缓存数据之外的缓存数据存储至第三类缓存区。其中,N’为大于或等于1的整数,其取值小于第一类缓存区和第三类缓存区中所有缓存数据的数量。
而在步骤S7003之后,本实施例还可以包括:
S7004、确定第三类缓存区的剩余存储空间是否小于预设存储空间阈值。
S7005、若第三类缓存区的剩余存储空间小于预设存储空间阈值,则按照留存值从大到小的顺序,将第三类缓存区中后Q个缓存数据删除,Q为大于或等于1的整数,使得第三类缓存区的剩余存储空间等于预设存储空间阈值;
S7006、按照留存值从大到小的顺序,将第二类缓存区中的前Q个缓存数据从第二类缓存区迁移至第三类缓存区。
可选的,S7004之后,还可以包括如下步骤:
S7007、若第三类缓存区的剩余存储空间大于预设存储空间阈值,则按照留存值从大到小的顺序,将第二类缓存区中的前X个缓存数据从第二类缓存区迁移至第三类缓存区,X为大于或等于1的整数。
S7008、若第三类缓存区的剩余存储空间等于预设存储空间阈值,则按照留存值从大到小的顺序,将第二类缓存区中的前Y个缓存数据从第二类缓存区迁移至第三类缓存区,Y为大于或等于1的整数。
经过步骤S7006、S7007和S7008之后,第三类缓存区的剩余存储空间可以为0。当然,也存在将第二类缓存区中的所有缓存数据均从第二类缓存区迁移至第三类缓存区,第三类缓存区的剩余存储空间仍然不为0的情况。
本实施例中,存储空间是指能够存储的缓存数据的数量。示例性地,第二类缓存区、第三类缓存区、第一类缓存区的存储空间大小分别为N1、N2、N3,即第二类缓存区、第三类缓存区和第一类缓存区分别能够存储的缓存数据的最大数量为N1、N2和N3。则本实施例是将第一类缓存区和第三类缓存区的N2+N3个缓存数据按照从大到小的顺序排序,并将排序结果中前N3个缓存数据存储至第一类缓存区,以及将排序结果中其余的N2个缓存数据存储至第三类缓存区;之后,确定第二类缓存区的剩余存储空间是否大于N”(N”为预设的清理的缓存数据的数量,大小可以为N3的五分之一到十分之一之间),如果小于N”,则按照留存值从大到小的顺序,将第三类缓存区中后Q个缓存数据进行清理,以预留出N”个空位;最后,按照留存值从大到小的顺序,将第二类缓存区中的前Q个缓存数据迁移至第三类缓存区中。
本实施例通过按照留存值从大到小的顺序,确定第一类缓存区中前M个缓存数据,以及,第三类缓存区中前N个缓存数据;M和N均为大于或等于0的整数,且M和N不同时为0,M与N的和等于第一类缓存区的最大存储空间;将前N个缓存数据从第三类缓存区迁移至第一类缓存区;将第一类缓存区中除前M个缓存数据之外的缓存数据,从第一类缓存区迁移至第三类缓存区;第一类缓存区中除前M个缓存数据之外的缓存数据与第三类缓存区中除前N个缓存数据之外的缓存数据的存储空间的和不大于第三类缓存区的最大存储空间。相较于现有技术中的最长未命中算法,即若缓存中的缓存数据超过预设时间未命中,则将该缓存数据从缓存中删除从而释放缓存空间的方案而言,本实施例通过根据第一类缓存区、第二类缓存区和第三类缓存区中缓存数据的留存值对各个缓存区中的缓存数据进行分类存储,并且针对第三类缓存区中的缓存数据根据留存值进行清理,从而释放缓存空间。
本实施例可以适用于普通内存缓存,也可以适用于其他基于KEY-VALUE形式的缓存中间件,针对一些热门查询,本实施例能够降低信息***的压力并提高查询速度,并且不需要引入缓存中间件,可以直接使用应用服务器的内存做缓存,而在应用服务器的内存空间有限的情况下,能够提高缓存空间的利用率,并提高数据查询效率。
在上述方法实施例的基础上,本申请实施例还提供一种数据查询装置。图8为本申请实施例提供的数据查询装置的结构示意图。如图8所示,该数据查询装置,包括:接收模块81、查询模块82和输出模块83;其中,接收模块81,用于接收数据查询请求;所述数据查询请求包括待查询的目标数据标识;查询模块82,用于根据所述目标数据标识,在缓存的缓存数据中进行数据查询;输出模块83,用于若在缓存中查询到所述目标数据标识对应的第一目标数据、且所述第一目标数据所在的目标缓存区为第一类缓存区,则输出所述第一目标数据;所述第一类缓存区的缓存数据采用异步的方式刷新。
在一些实施例中,该装置还包括:确定模块84;确定模块84,用于若在缓存中查询到所述第一目标数据、且所述目标缓存区非第一类缓存区,则根据所述第一目标数据的缓存有效时间,确定所述第一目标数据是否过期;输出模块83,还用于若所述第一目标数据未过期,则输出所述第一目标数据;查询模块82,还用于若所述第一目标数据过期,或者,在缓存中未查询到所述目标数据标识对应的数据,则根据所述目标数据标识从数据库查询,得到目标数据标识对应的第二目标数据,并通过输出模块83输出第二目标数据。
在一些实施例中,该装置还包括:更新模块85,用于更新所述目标缓存区中所述第一目标数据的缓存信息。
在一些实施例中,所述缓存信息包括:查询命中次数、查询成本、留存值和刷新时间;所述查询成本用于表征从数据库中查询所耗费的时间,所述留存值用于表征缓存价值;所述更新模块85更新所述目标缓存区中所述第一目标数据的缓存信息,具体包括:若所述目标缓存区为第一类缓存区,或者,所述目标缓存区非第一类缓存区、且所述第一目标数据未过期,则更新所述目标缓存区中所述第一目标数据的查询命中次数;或者,若所述目标缓存区非第一类缓存区、且所述第一目标数据过期,则根据所述第二目标数据,更新所述目标缓存区中所述第一目标数据的所有缓存信息,以及,第一目标数据。
在一些实施例中,确定模块84,还用于确定所述缓存的第二类缓存区是否存在剩余缓存空间;所述第二类缓存区用于存储新添加至缓存的数据;以及,若所述第二类缓存区存在剩余缓存空间,则将所述第二目标数据和所述第二目标数据的缓存信息添加至所述第二类缓存区。
在一些实施例中,该装置还包括:刷新模块86;接收模块81,还用于接收缓存刷新的触发消息;确定模块84,还用于确定缓存刷新时待刷新缓存区是否为所述第一类缓存区;刷新模块86,用于若缓存刷新时待刷新缓存区是所述第一类缓存区,则异步刷新所述待刷新缓存区存储的缓存数据和缓存数据的缓存信息。
在一些实施例中,刷新模块86异步刷新待刷新缓存区存储的缓存数据和缓存数据的缓存信息,具体包括:异步查询数据库,得到新的缓存数据;根据所述新的缓存数据,刷新所述待刷新缓存区存储的缓存数据;根据所述新的缓存数据的查询信息,刷新所述待刷新缓存区存储的缓存数据的缓存信息。
在一些实施例中,所述缓存信息包括:查询命中次数、查询成本、留存值、刷新时间;所述查询成本用于表征从数据库中查询所耗费的时间,所述留存值用于表征缓存价值;所述刷新模块86根据所述新的缓存数据的查询信息,刷新所述待刷新缓存区存储的缓存数据的缓存信息,具体包括:根据所述新的缓存数据的查询信息,确定缓存数据刷新后的查询成本;根据缓存数据刷新后的查询成本、刷新前的查询命中次数、刷新前的刷新时间,获取缓存数据刷新后的留存值;使用缓存数据刷新后的查询成本刷新待刷新缓存区存储的缓存数据的查询成本,并使用缓存数据刷新后的留存值,刷新待刷新缓存区存储的缓存数据的留存值;刷新待刷新缓存区存储的缓存数据的查询命中次数和刷新时间。
在一些实施例中,该装置还包括获取模块87,用于若缓存刷新时待刷新缓存区为第二类缓存区或第三类缓存区,则根据缓存数据的查询成本、查询命中次数、刷新时间,获取缓存数据刷新后的留存值;所述第二类缓存区用于存储新添加至缓存的数据,所述第三类缓存区用于存储在第一类缓存区中的缓存数据按照留存值从大到小的顺序排序后的前Q个缓存数据,所述Q为大于或等于1的整数;所述第二类缓存区和所述第三类缓存区的缓存数据基于缓存有效时间刷新;所述刷新模块86,还用于使用缓存数据刷新后的留存值,刷新所述待刷新缓存区存储的缓存数据的留存值,并刷新所述缓存数据的刷新时间和查询命中次数。
在一些实施例中,该装置还包括:迁移模块88;确定模块84,还用于按照留存值从大到小的顺序,确定所述第一类缓存区中前M个缓存数据,以及,所述第三类缓存区中前N个缓存数据;所述M和所述N均为大于或等于0的整数,且所述M和所述N不同时为0,所述M与所述N的和等于第一类缓存区的最大存储空间;迁移模块88,用于将所述前N个缓存数据从所述第三类缓存区迁移至所述第一类缓存区;以及,将所述第一类缓存区中除前M个缓存数据之外的缓存数据,从所述第一类缓存区迁移至所述第三类缓存区;所述第一类缓存区中除前M个缓存数据之外的缓存数据与所述第三类缓存区中除前N个缓存数据之外的缓存数据的存储空间的和不大于所述第三类缓存区的最大存储空间。
在一些实施例中,确定模块84,还用于确定所述第三类缓存区的剩余存储空间是否小于预设存储空间阈值;迁移模块88,还用于若所述第三类缓存区的剩余存储空间小于预设存储空间阈值,则按照留存值从大到小的顺序,将所述第三类缓存区中后Q个缓存数据删除;迁移模块88,还用于按照留存值从大到小的顺序,将所述第二类缓存区中的前Q个缓存数据从所述第二类缓存区迁移至所述第三类缓存区。
本申请实施例提供的数据查询装置,可用于执行上述实施例中数据查询方法的技术方案,其实现原理和技术效果类似,在此不再赘述。
需要说明的是,应理解以上装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。例如,查询模块82可以为单独设立的处理元件,也可以集成在上述装置的某一个芯片中实现,此外,也可以以程序代码的形式存储于上述装置的存储器中,由上述装置的某一个处理元件调用并执行以上查询模块82的功能。其它模块的实现与之类似。此外这些模块全部或部分可以集成在一起,也可以独立实现。这里的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
图9为本申请实施例提供的电子设备的结构示意图。如图9所示,该电子设备可以包括:收发器91、处理器92、存储器93。
处理器92执行存储器存储的计算机执行指令,使得处理器92执行上述实施例中的方案。处理器92可以是通用处理器,包括中央处理器CPU、网络处理器(network processor,NP)等;还可以是数字信号处理器DSP、专用集成电路ASIC、现场可编程门阵列FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
存储器93通过***总线与处理器92连接并完成相互间的通信,存储器93用于存储计算机程序指令。
收发器91可以用于接收数据查询请求。
***总线可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。***总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。收发器用于实现数据库访问装置与其他计算机(例如客户端、读写库和只读库)之间的通信。存储器可能包含随机存取存储器(randomaccess memory,RAM),也可能还包括非易失性存储器(non-volatile memory)。
本申请实施例提供的电子设备,可以是上述实施例的应用服务器或缓存服务器。
本申请实施例还提供一种运行指令的芯片,该芯片用于执行上述实施例中数据查询方法的技术方案。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,当该计算机指令在计算机上运行时,使得计算机执行上述实施例数据查询方法的技术方案。
本申请实施例还提供一种计算机程序产品,该计算机程序产品包括计算机程序,其存储在计算机可读存储介质中,至少一个处理器可以从计算机可读存储介质读取计算机程序,至少一个处理器执行计算机程序时可实现上述实施例中数据查询方法的技术方案。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求书指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。
Claims (15)
1.一种数据查询方法,其特征在于,包括:
接收数据查询请求;所述数据查询请求包括待查询的目标数据标识;
根据所述目标数据标识,在缓存的缓存数据中进行数据查询;
若在缓存中查询到所述目标数据标识对应的第一目标数据、且所述第一目标数据所在的目标缓存区为第一类缓存区,则输出所述第一目标数据;所述第一类缓存区的缓存数据采用异步的方式刷新。
2.根据权利要求1所述的方法,其特征在于,所述根据所述目标数据标识,在缓存的缓存数据中进行数据查询之后,还包括:
若在缓存中查询到所述第一目标数据、且所述目标缓存区非第一类缓存区,则根据所述第一目标数据的缓存有效时间,确定所述第一目标数据是否过期;
若所述第一目标数据未过期,则输出所述第一目标数据;
或者,若所述第一目标数据过期,或者,在缓存中未查询到所述目标数据标识对应的数据,则根据所述目标数据标识从数据库查询,得到所述目标数据标识对应的第二目标数据,并输出所述第二目标数据。
3.根据权利要求2所述的方法,其特征在于,若在缓存中查询到所述第一目标数据,则所述方法还包括:
更新所述目标缓存区中所述第一目标数据的缓存信息。
4.根据权利要求3所述的方法,其特征在于,所述缓存信息包括:查询命中次数、查询成本、留存值和刷新时间;所述查询成本用于表征从数据库中查询所耗费的时间,所述留存值用于表征缓存价值;
所述更新所述目标缓存区中所述第一目标数据的缓存信息,包括:
若所述目标缓存区为第一类缓存区,或者,所述目标缓存区非第一类缓存区、且所述第一目标数据未过期,则更新所述目标缓存区中所述第一目标数据的查询命中次数;
或者,若所述目标缓存区非第一类缓存区、且所述第一目标数据过期,则根据所述第二目标数据,更新所述目标缓存区中所述第一目标数据的所有缓存信息,以及,所述第一目标数据。
5.根据权利要求2所述的方法,其特征在于,若在缓存中未查询到所述目标数据标识对应的数据,则所述根据所述目标数据标识从数据库查询,得到所述目标数据标识对应的第二目标数据之后,还包括:
确定所述缓存的第二类缓存区是否存在剩余缓存空间;所述第二类缓存区用于存储新添加至缓存的数据;
若所述第二类缓存区存在剩余缓存空间,则将所述第二目标数据和所述第二目标数据的缓存信息添加至所述第二类缓存区。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述方法还包括:
接收缓存刷新的触发消息;
确定缓存刷新时待刷新缓存区是否为所述第一类缓存区;
若缓存刷新时待刷新缓存区是所述第一类缓存区,则异步刷新所述待刷新缓存区存储的缓存数据和缓存数据的缓存信息。
7.根据权利要求6所述的方法,其特征在于,所述异步刷新所述待刷新缓存区存储的缓存数据和缓存数据的缓存信息,包括:
异步查询数据库,得到新的缓存数据;
根据所述新的缓存数据,刷新所述待刷新缓存区存储的缓存数据;
根据所述新的缓存数据的查询信息,刷新所述待刷新缓存区存储的缓存数据的缓存信息。
8.根据权利要求7所述的方法,其特征在于,所述缓存信息包括:查询命中次数、查询成本、留存值、刷新时间;所述查询成本用于表征从数据库中查询所耗费的时间,所述留存值用于表征缓存价值;
所述根据所述新的缓存数据的查询信息,刷新所述待刷新缓存区存储的缓存数据的缓存信息,包括:
根据所述新的缓存数据的查询信息,确定缓存数据刷新后的查询成本;
根据缓存数据刷新后的查询成本、刷新前的查询命中次数、刷新前的刷新时间,获取缓存数据刷新后的留存值;
使用缓存数据刷新后的查询成本刷新待刷新缓存区存储的缓存数据的查询成本,并使用缓存数据刷新后的留存值,刷新待刷新缓存区存储的缓存数据的留存值;
刷新待刷新缓存区存储的缓存数据的查询命中次数和刷新时间。
9.根据权利要求8所述的方法,其特征在于,所述确定缓存刷新时待刷新缓存区是否为所述第一类缓存区之后,所述方法还包括:
若缓存刷新时待刷新缓存区为第二类缓存区或第三类缓存区,则根据缓存数据的查询成本、查询命中次数、刷新时间,获取缓存数据刷新后的留存值;所述第二类缓存区用于存储新添加至缓存的数据,所述第三类缓存区用于存储在第一类缓存区中的缓存数据按照留存值从大到小的顺序排序后的前Q个缓存数据,所述Q为大于或等于1的整数;所述第二类缓存区和所述第三类缓存区的缓存数据基于缓存有效时间刷新;
使用缓存数据刷新后的留存值,刷新所述待刷新缓存区存储的缓存数据的留存值,并刷新所述缓存数据的刷新时间和查询命中次数。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
按照留存值从大到小的顺序,确定所述第一类缓存区中前M个缓存数据,以及,所述第三类缓存区中前N个缓存数据;所述M和所述N均为大于或等于0的整数,且所述M和所述N不同时为0,所述M与所述N的和等于第一类缓存区的最大存储空间;
将所述前N个缓存数据从所述第三类缓存区迁移至所述第一类缓存区;
将所述第一类缓存区中除前M个缓存数据之外的缓存数据,从所述第一类缓存区迁移至所述第三类缓存区;所述第一类缓存区中除前M个缓存数据之外的缓存数据与所述第三类缓存区中除前N个缓存数据之外的缓存数据的存储空间的和不大于所述第三类缓存区的最大存储空间。
11.根据权利要求10所述的方法,其特征在于,所述将所述第一类缓存区中除前M个缓存数据之外的缓存数据,从所述第一类缓存区迁移至所述第三类缓存区之后,还包括:
确定所述第三类缓存区的剩余存储空间是否小于预设存储空间阈值;
若所述第三类缓存区的剩余存储空间小于预设存储空间阈值,则按照留存值从大到小的顺序,将所述第三类缓存区中后Q个缓存数据删除;
按照留存值从大到小的顺序,将所述第二类缓存区中的前Q个缓存数据从所述第二类缓存区迁移至所述第三类缓存区。
12.一种数据查询装置,其特征在于,包括:
接收模块,用于接收数据查询请求;所述数据查询请求包括待查询的目标数据标识;
查询模块,用于根据所述目标数据标识,在缓存的缓存数据中进行数据查询;
输出模块,用于在缓存中查询到所述目标数据标识对应的第一目标数据、且所述第一目标数据所在的目标缓存区为第一类缓存区时,则输出所述第一目标数据;所述第一类缓存区的缓存数据采用异步的方式刷新。
13.一种电子设备,其特征在于,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1-11中任一项所述的方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1-11中任一项所述的方法。
15.一种计算机程序产品,其特征在于,包括计算机程序,该计算机程序被处理器执行时实现权利要求1-11中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111491266.7A CN114138840A (zh) | 2021-12-08 | 2021-12-08 | 数据查询方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111491266.7A CN114138840A (zh) | 2021-12-08 | 2021-12-08 | 数据查询方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114138840A true CN114138840A (zh) | 2022-03-04 |
Family
ID=80384979
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111491266.7A Pending CN114138840A (zh) | 2021-12-08 | 2021-12-08 | 数据查询方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114138840A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115145967A (zh) * | 2022-09-05 | 2022-10-04 | 云账户技术(天津)有限公司 | 一种数据缓存的方法及装置 |
CN115470246A (zh) * | 2022-09-15 | 2022-12-13 | 中航信移动科技有限公司 | 一种基于cdn的请求响应方法、电子设备及存储介质 |
CN116383250A (zh) * | 2023-03-07 | 2023-07-04 | 深圳市丰宜科技有限公司 | 一种生成缓存的方法、存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007094884A (ja) * | 2005-09-29 | 2007-04-12 | Toshiba Corp | データ検索方法及びデータ検索システム |
CN104217019A (zh) * | 2014-09-25 | 2014-12-17 | 中国人民解放军信息工程大学 | 基于多级缓存模块的内容查询方法和装置 |
CN105095424A (zh) * | 2015-07-17 | 2015-11-25 | 四川久远银海软件股份有限公司 | 一种实现医院his***中药品的高并发检索方法 |
CN106569733A (zh) * | 2015-10-12 | 2017-04-19 | 北京国双科技有限公司 | 缓存数据的处理方法和装置 |
CN107291920A (zh) * | 2017-06-28 | 2017-10-24 | 南京途牛科技有限公司 | 一种机票查询缓存方法 |
CN109684358A (zh) * | 2017-10-18 | 2019-04-26 | 北京京东尚科信息技术有限公司 | 数据查询的方法和装置 |
CN110909025A (zh) * | 2018-09-17 | 2020-03-24 | 深圳市优必选科技有限公司 | 数据库的查询方法、查询装置及终端 |
CN112445794A (zh) * | 2019-09-05 | 2021-03-05 | 南京工程学院 | 一种大数据***的缓存方法 |
CN113094392A (zh) * | 2020-01-09 | 2021-07-09 | 北京沃东天骏信息技术有限公司 | 数据缓存的方法和装置 |
CN113271359A (zh) * | 2021-05-19 | 2021-08-17 | 北京百度网讯科技有限公司 | 刷新缓存数据的方法、装置、电子设备和存储介质 |
-
2021
- 2021-12-08 CN CN202111491266.7A patent/CN114138840A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007094884A (ja) * | 2005-09-29 | 2007-04-12 | Toshiba Corp | データ検索方法及びデータ検索システム |
CN104217019A (zh) * | 2014-09-25 | 2014-12-17 | 中国人民解放军信息工程大学 | 基于多级缓存模块的内容查询方法和装置 |
CN105095424A (zh) * | 2015-07-17 | 2015-11-25 | 四川久远银海软件股份有限公司 | 一种实现医院his***中药品的高并发检索方法 |
CN106569733A (zh) * | 2015-10-12 | 2017-04-19 | 北京国双科技有限公司 | 缓存数据的处理方法和装置 |
CN107291920A (zh) * | 2017-06-28 | 2017-10-24 | 南京途牛科技有限公司 | 一种机票查询缓存方法 |
CN109684358A (zh) * | 2017-10-18 | 2019-04-26 | 北京京东尚科信息技术有限公司 | 数据查询的方法和装置 |
CN110909025A (zh) * | 2018-09-17 | 2020-03-24 | 深圳市优必选科技有限公司 | 数据库的查询方法、查询装置及终端 |
CN112445794A (zh) * | 2019-09-05 | 2021-03-05 | 南京工程学院 | 一种大数据***的缓存方法 |
CN113094392A (zh) * | 2020-01-09 | 2021-07-09 | 北京沃东天骏信息技术有限公司 | 数据缓存的方法和装置 |
CN113271359A (zh) * | 2021-05-19 | 2021-08-17 | 北京百度网讯科技有限公司 | 刷新缓存数据的方法、装置、电子设备和存储介质 |
Non-Patent Citations (2)
Title |
---|
EL ZANFALY, D. S.ELDEAN, A. S.FAC. OF COMPUT. & INF., HELWAN UNIV., CAIRO, EGYPT: "MULTI LEVEL CACHING TO SPEEDUP QUERY PROCESSING IN DISTRIBUTED DATABASES", PROCEEDINGS OF THE 3RD IEEE INTERNATIONAL SYMPOSIUM ON SIGNAL PROCESSING AND INFORMATION TECHNOLOGY, 1 January 2004 (2004-01-01), pages 580 - 582 * |
张建静: "基于多级缓存的海量感知数据检索优化的研究", 中国优秀硕士学位论文全文数据库信息科技辑, no. 9, 15 September 2014 (2014-09-15), pages 16 - 25 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115145967A (zh) * | 2022-09-05 | 2022-10-04 | 云账户技术(天津)有限公司 | 一种数据缓存的方法及装置 |
CN115470246A (zh) * | 2022-09-15 | 2022-12-13 | 中航信移动科技有限公司 | 一种基于cdn的请求响应方法、电子设备及存储介质 |
CN116383250A (zh) * | 2023-03-07 | 2023-07-04 | 深圳市丰宜科技有限公司 | 一种生成缓存的方法、存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114138840A (zh) | 数据查询方法、装置、设备及存储介质 | |
CN106911780B (zh) | 业务id生成方法、装置及*** | |
CN107491523B (zh) | 存储数据对象的方法及装置 | |
CN108009008A (zh) | 数据处理方法和***、电子设备 | |
CN110909025A (zh) | 数据库的查询方法、查询装置及终端 | |
US20160350302A1 (en) | Dynamically splitting a range of a node in a distributed hash table | |
CN109977129A (zh) | 多级数据缓存方法及设备 | |
US11294920B2 (en) | Method and apparatus for accessing time series data in memory | |
CN107301215B (zh) | 一种搜索结果缓存方法及装置、搜索方法及装置 | |
CN104750715A (zh) | 缓存***中数据淘汰方法、装置、***及相关服务器设备 | |
CN109766318B (zh) | 文件读取方法及装置 | |
CN109240607B (zh) | 一种文件读取方法和装置 | |
CN102819586A (zh) | 一种基于高速缓存的url分类方法和设备 | |
CN109446222A (zh) | 一种双缓存的数据存储方法、装置及存储介质 | |
CN108665335B (zh) | 处理购物网站的购物车数据的方法 | |
CN110851474A (zh) | 数据查询方法、数据库中间件、数据查询设备及存储介质 | |
CN111159219A (zh) | 一种数据管理方法、装置、服务器及存储介质 | |
US10747773B2 (en) | Database management system, computer, and database management method | |
CN108763458B (zh) | 内容特征查询方法、装置、计算机设备及存储介质 | |
CN111708720A (zh) | 一种数据缓存方法、装置、设备及介质 | |
CN110750498B (zh) | 对象访问方法、装置及存储介质 | |
CN111831691A (zh) | 一种数据读写方法及装置、电子设备、存储介质 | |
US20160210237A1 (en) | Storage device, data access method, and program recording medium | |
CN114519013A (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
US11544242B2 (en) | System and method for storing and retrieving data in different data spaces |
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 |