CN116303590A - 一种缓存数据访问方法、装置、设备以及存储介质 - Google Patents
一种缓存数据访问方法、装置、设备以及存储介质 Download PDFInfo
- Publication number
- CN116303590A CN116303590A CN202310110508.6A CN202310110508A CN116303590A CN 116303590 A CN116303590 A CN 116303590A CN 202310110508 A CN202310110508 A CN 202310110508A CN 116303590 A CN116303590 A CN 116303590A
- Authority
- CN
- China
- Prior art keywords
- data
- cache
- target data
- database
- access 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
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/23—Updating
- G06F16/2308—Concurrency control
-
- 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
本申请公开了一种缓存数据访问方法,用以解决采用现有数据访问方法,在遇到大量的并发数据访问请求时,可能会出现缓存击穿或者缓存雪崩,进而可能会导致服务宕机的问题。方法包括:根据接收到的数据访问请求,判断缓存中是否存在与所述数据访问请求对应的目标数据;当判断结果为否时,在确定所述第一请求数量小于预设阈值后,将所述数据访问请求发送至数据库,在数据库中查找与所述数据访问请求对应的目标数据;当判断结果为是时,确定所述缓存中的目标数据是否过期;当确定缓存中的目标数据未过期时,则在缓存中读取目标数据;当确定缓存中的目标数据已过期时,在确定第一请求数量小于预设阈值后,在数据库中查找与数据访问请求对应的目标数据。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种缓存数据访问方法、装置、设备以及存储介质。
背景技术
随着计算机技术的飞速发展,各类应用的用户量也开始飞速增长,用户量的激增,同时也对应用***的数据存储层带来了极大的访问压力。
在现有技术中,出于对应用性能的考虑,大多数应用会利用缓存技术,通过缓存存储应用经常被访问的数据,进而在访问流量到达数据存储层(比如数据库)之前,通过查询缓存数据的方式减轻数据库压力从而提高***整体的查询性能与吞吐量。
然而现有的数据缓存技术存在的问题在于,当原始数据发生修改,或者由于缓存到期需要对缓存数据进行更新时,由于在缓存层中无法获取到请求所需要的参数,因而***将会进一步地访问数据库来进行数据查询,如果此时恰好遇到大量的并发数据访问请求,这些数据访问请求将直接穿过缓存访问到后端数据库,从而导致服务或数据库压力陡增,最终将降低***的吞吐量和响应速度,严重的甚至会导致服务宕机,进而造成缓存击穿或者雪崩的现象。
由此可见,目前亟需一种可以保证***稳定性的缓存数据访问方法。
发明内容
本申请实施例提供一种缓存数据访问方法,用以解决采用现有数据访问方法,在遇到大量的并发数据访问请求时,可能会出现缓存击穿或者缓存雪崩,进而可能会导致服务宕机的问题。
本申请实施例还提供一种缓存数据访问装置,用以解决采用现有数据访问方法,在遇到大量的并发数据访问请求时,可能会出现缓存击穿或者缓存雪崩,进而可能会导致服务宕机的问题。
本申请实施例还提供一种缓存数据访问设备,用以解决采用现有数据访问方法,在遇到大量的并发数据访问请求时,可能会出现缓存击穿或者缓存雪崩,进而可能会导致服务宕机的问题。
本申请实施例还提供一种计算机可读存储介质,用以解决采用现有数据访问方法,在遇到大量的并发数据访问请求时,可能会出现缓存击穿或者缓存雪崩,进而可能会导致服务宕机的问题。
本申请实施例采用下述技术方案:
一种缓存数据访问方法,包括:根据接收到的数据访问请求,判断缓存中是否存在与所述数据访问请求对应的目标数据;当判断结果为否时,确定当前针对数据库的第一请求数量,在确定所述第一请求数量小于预设阈值后,将所述数据访问请求发送至数据库,在数据库中查找与所述数据访问请求对应的目标数据,并将所述目标数据反馈至所述数据访问请求对应的数据请求方,其中,所述第一请求数量为当前针对所述数据库的所有并行访问请求的数量;当判断结果为是时,确定所述缓存中的目标数据是否过期;当确定所述缓存中的目标数据未过期时,则在所述缓存中读取目标数据,并将所述目标数据反馈至所述数据请求方;当确定所述缓存中的目标数据已过期时,在确定所述第一请求数量小于预设阈值后,将所述数据访问请求发送至数据库,在数据库中查找与所述数据访问请求对应的目标数据。
一种缓存数据访问装置,包括:缓存命中判断单元,用于根据接收到的数据访问请求,判断缓存中是否存在与所述数据访问请求对应的目标数据;数据库查询单元,用于当缓存命中判断单元得到的判断结果为否时,确定当前针对数据库的第一请求数量,在确定所述第一请求数量小于预设阈值后,将所述数据访问请求发送至数据库,在数据库中查找与所述数据访问请求对应的目标数据,并将所述目标数据反馈至所述数据访问请求对应的数据请求方,其中,所述第一请求数量为当前针对所述数据库的所有并行访问请求的数量;过期查询单元,用于当缓存命中判断判断结果为是时,确定所述缓存中的目标数据是否过期;缓存查询单元,用于当过期查询单元确定所述缓存中的目标数据未过期时,则在所述缓存中读取目标数据,并将所述目标数据反馈至所述数据请求方;数据库查询单元,用于当过期查询单元确定所述缓存中的目标数据已过期时,在确定所述第一请求数量小于预设阈值后,将所述数据访问请求发送至数据库,在数据库中查找与所述数据访问请求对应的目标数据。
一种缓存数据访问设备,包括:
处理器;以及被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行以下操作:根据接收到的数据访问请求,判断缓存中是否存在与所述数据访问请求对应的目标数据;当判断结果为否时,确定当前针对数据库的第一请求数量,在确定所述第一请求数量小于预设阈值后,将所述数据访问请求发送至数据库,在数据库中查找与所述数据访问请求对应的目标数据,并将所述目标数据反馈至所述数据访问请求对应的数据请求方,其中,所述第一请求数量为当前针对所述数据库的所有并行访问请求的数量;当判断结果为是时,确定所述缓存中的目标数据是否过期;当确定所述缓存中的目标数据未过期时,则在所述缓存中读取目标数据,并将所述目标数据反馈至所述数据请求方;当确定所述缓存中的目标数据已过期时,在确定所述第一请求数量小于预设阈值后,将所述数据访问请求发送至数据库,在数据库中查找与所述数据访问请求对应的目标数据。
一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行以下操作:根据接收到的数据访问请求,判断缓存中是否存在与所述数据访问请求对应的目标数据;当判断结果为否时,确定当前针对数据库的第一请求数量,在确定所述第一请求数量小于预设阈值后,将所述数据访问请求发送至数据库,在数据库中查找与所述数据访问请求对应的目标数据,并将所述目标数据反馈至所述数据访问请求对应的数据请求方,其中,所述第一请求数量为当前针对所述数据库的所有并行访问请求的数量;当判断结果为是时,确定所述缓存中的目标数据是否过期;当确定所述缓存中的目标数据未过期时,则在所述缓存中读取目标数据,并将所述目标数据反馈至所述数据请求方;当确定所述缓存中的目标数据已过期时,在确定所述第一请求数量小于预设阈值后,将所述数据访问请求发送至数据库,在数据库中查找与所述数据访问请求对应的目标数据。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:
采用本申请实施例提供的一种缓存数据访问方法,***在接收到数据访问请求后,首先判断缓存中是否存在与所述数据访问请求对应的目标数据,如果不存在,即未命中缓存,在穿透缓存访问后端数据库之前,将会确定当前针对数据的并行访问请求数量,如果当前针对数据库的并行访问请求数量小于预设访问阈值,即说明此时数据库的访问量未达到阈值,新增访问不会对数据库正常运行造成影响,则在这种情况下可以将数据访问请求发送至数据库,在数据库中查找与所述数据访问请求对应的目标数据,并将所述目标数据反馈至所述数据访问请求对应的数据请求方;而如果判断缓存中存在目标数据,即命中缓存,则进一步判断目标数据是否过期,如果未过期,则在缓存中读取目标数据,并将目标数据反馈至数据请求方,如果已过期,则同样需要确定当前针对数据库的并行访问请求数量是否小于预设访问阈值,只有在当前针对数据库的并行访问请求未达到阈值,才将所述数据访问请求发送至数据库,在数据库中查找与所述数据访问请求对应的目标数据,而在当前针对数据库的并行访问请求达到阈值时,则需要访问数据库的各请求需要进行抢锁操作,只有获得读取锁的请求才可以对数据库进行访问,而读取锁的数量是固定的,只有已完成数据库访问的请求释放后,其他新的访问请求才可能获取到该读取锁,进而保证了在当前针对数据库的并行访问请求达到阈值后,不会有新增的访问请求到达数据库,采用本申请实施例所提供缓存数据访问方法,在缓存更新或者缓存数据过期的情况下,数据访问请求不会直接穿过缓存访问到后端数据库,进而保证了数据库的正常运行,从而可以实现稳定的数据读取访问。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例提供的一种缓存数据访问方法的具体流程示意图;
图2为本申请实施例提供的一种缓存数据访问装置的具体结构示意图;
图3为本申请实施例提供的一种缓存数据访问设备的具体结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供的缓存数据访问方法的执行主体,可以但不限于为数据库管理服务器、电商服务器、社交服务器、金融服务器或者视频服务器等中的至少一种。
为便于描述,下文以该方法的执行主体为金融类应用的后台服务器为例,对该方法的实施方式进行介绍。可以理解,该方法的执行主体为金融类应用的后台服务器只是一种示例性的说明,并不应理解为对该方法的限定。
具体地,本申请所提供的缓存数据访问方法的具体实现流程示意图如图1所示,主要包括下述步骤:
步骤11,根据接收到的数据访问请求,判断缓存中是否存在与所述数据访问请求对应的目标数据,当判断结果为否时,则执行步骤12;当判断结果为是时,则执行步骤15;
其中,数据访问请求中携带有待访问数据的标识信息,则后台服务器在接收到数据访问请求后,可以根据该数据访问请求中携带的标识信息,查找缓存中是否存在与数据访问请求对应的目标数据。
在本申请实施例中,该缓存中的数据可以是服务器根据接收到的缓存指令,预先从数据库中获取并写入缓存中的,在一种实施方式中,后台服务器可以根据业务需要,对数据库中所有与业务相关的原始数据进行缓存,这种缓存方式的好处在于,所占用缓存空间较少,且由于缓存的数据库中的原始数据,因而一份原始数据即可以供各个应用(或者服务)统一调用使用了。或者,服务器也可以仅对api接口的响应数据进行缓存,通过这种缓存方式,可以实现业务与缓存的解耦。本申请实施例对后台服务器具体缓存哪些数据不做限定。
这里需要说明的是,在本申请实施例中,后台服务器可以对数据库的数据进行全量缓存,或者也可以仅对热点数据进行缓存,或者还可以采用固定缓存大小的方式进行数据缓存,本申请实施例对后台服务器具体缓存多大的数据不做限定。此外,在本申请实施例中,还可以使用最近最少使用(Least Recently Used,LRU)算法,对已经写入缓存中的内容进行淘汰更新,具体地,使用LRU算法对缓存进行淘汰更新属于本领域常用技术手段,故有关理由LRU算法进行缓存淘汰的具体技术方案,此处不再赘述。
另外这里需要说明的是,后台服务器在将数据写入缓存时,还会在缓存数据表中为各条缓存数据添加缓存相关信息,该缓存相关信息包括:缓存过期时间以及缓存刷新间隔时间。其中,缓存过期时间表示该条缓存数据的有效时长,从该条缓存数据写入缓存中开始计时,当到达过期时间,则需要对缓存中的该条缓存数据进行更新。而刷新间隔时间表示缓存数据多久需要根据数据库中的数据进行刷新。在本申请实施例中,设置的刷新间隔时间要小于缓存过期时间,例如,可以设置刷新间隔时间为3分钟,而设置缓存过期时间为24小时。
步骤12,当通过执行步骤11判断缓存中不存在与数据访问请求对应的目标数据时,则后台服务器可以进一步确定当前针对数据库的第一请求数量,当确定第一请求数量小于预设阈值时,则执行步骤13,当确定第一请求数量大于预设阈值时,则执行步骤14;
其中,第一请求数量为当前针对数据库的所有并行访问请求的数量,预设阈值为根据数据库性能,预先设置的、在不影响数据库性能的情况下,数据库最大可以处理的并行访问请求数量。
步骤13,当通过执行步骤12确定第一请求数量小于预设阈值时,后台服务器可以将数据访问请求发送至数据库,在数据库中查找与所述数据访问请求对应的目标数据,并将所述目标数据反馈至所述数据访问请求对应的数据请求方;
如果后台服务器确定当前针对数据库的并行访问请求数量小于预设访问阈值,即说明此时针对数据库的访问量未达到阈值,新增访问不会对数据库正常运行造成影响,则在这种情况下可以将数据访问请求发送至数据库,在数据库中查找与所述数据访问请求对应的目标数据,并将所述目标数据反馈至所述数据访问请求对应的数据请求方。
步骤14,当通过执行步骤12确定第一请求数量大于预设阈值时,后台服务器将进一步判断所述数据访问请求是否获取到读取锁;
如果确定该条数据访问请求获取到读取锁,则可以将所述数据访问请求发送至数据库,在数据库中查找与所述数据访问请求对应的目标数据;而当确定该条数据访问请求未获取到读取锁,则可以向应用反馈数据获取失败通知,以使得应用根据该通知进行重试。由于读取锁的数量是固定的,只有已完成数据库访问的请求释放已占用的读取锁后,其他新的访问请求才可能获取到该读取锁,进而保证了在当前针对数据库的并行访问请求达到阈值后,不会有新增的访问请求到达数据库。
步骤15,当通过执行步骤11判断缓存中存在与数据访问请求对应的目标数据时,则后台服务器可以进一步确定缓存中的目标数据是否过期,当判断结果为否时,则执行步骤16;当判断结果为是时,则执行步骤17;
在本申请实施例中,当后台服务器根据标识信息在缓存中查询到数据访问请求所要访问的目标数据后,后台服务器可以该条目标数据对应的缓存过期时间,确定该条缓存数据是否过期。
步骤16,当通过执行步骤15确定缓存中的目标数据未过期时,则在所述缓存中读取目标数据,并将所述目标数据反馈至所述数据请求方;
这里需要说明的是,在确定目标数据未过期后,后台服务器还可以进一步根据刷新间隔时间,判断缓存中的目标数据是否需要刷新,并根据数据是否需要刷新,通过下述子步骤来完成对目标数据的读取:
子步骤1601,后台数据库可以确定当前数据访问请求的接收时刻T1;
子步骤1602,后台数据库确定针对该目标数据的第二访问请求的接收时刻T2;
其中,该第二访问请求为在所述数据访问请求前一条接收到的、针对目标数据的访问请求。
子步骤1603,确定T1与T2之间的时间间隔;
子步骤1604,判断时间间隔是否大于预设的刷新间隔时间,当判断结果为是时,则确定所述缓存中的目标数据需要刷新;当判断结果为否时,则确定所述缓存中的目标数据不需要刷新;
子步骤1605,当判断缓存中的目标数据不需要刷新时,则在所述缓存中读取所述目标数据,并反馈至数据请求方;
子步骤1606,当判断所述目标数据需要刷新时,则进一步确定当前针对数据库的第一请求数量,并根据第一请求数量确定是否对目标数据进行更新;
子步骤1607,当所述第一请求数量小于预设阈值时,则在数据库中读取与所述数据访问请求对应的更新数据,将所述更新数据反馈至所述数据请求方,并根据所述更新数据,对缓存中的目标数据进行更新;
子步骤1608,当所述第一请求数量大于预设阈值时,则在所述缓存中读取目标数据,并将所述目标数据反馈至所述数据请求方;
在将缓存中需要更新的目标数据反馈至数据请求方后,后台服务器还可以判断数据访问请求是否获取到更新锁,如果该条数据访问请求获取了更新锁,则后台服务器可以在数据库中读取与数据访问请求对应的更新数据,并根据更新数据对缓存中的目标数据进行更新。
步骤17,当通过执行步骤15得到的判断结果为是时,则后台服务器可以确定当前针对数据库的第一请求数量,在确定所述第一请求数量小于预设阈值后,将所述数据访问请求发送至数据库,在数据库中查找与所述数据访问请求对应的目标数据,并将所述目标数据反馈至所述数据访问请求对应的数据请求方;
而当后台服务器确定当前针对数据库的并行访问请求数量大于预设阈值后,则后台服务器可以向将已过期的缓存数据反馈至数据请求方,并进一步确定该数据访问请求是否获取了更新锁,如果该数据访问请求获取了更新锁,则后台服务器可以在数据库中读取与数据访问请求对应的更新数据,并根据更新数据对缓存中的目标数据进行更新。
采用本申请实施例提供的一种缓存数据访问方法,后台服务器在接收到数据访问请求后,首先判断缓存中是否存在与所述数据访问请求对应的目标数据,如果不存在,即未命中缓存,在穿透缓存访问后端数据库之前,将会确定当前针对数据的并行访问请求数量,如果当前针对数据库的并行访问请求数量小于预设访问阈值,即说明此时数据库的访问量未达到阈值,新增访问不会对数据库正常运行造成影响,则在这种情况下可以将数据访问请求发送至数据库,在数据库中查找与所述数据访问请求对应的目标数据,并将所述目标数据反馈至所述数据访问请求对应的数据请求方;而如果判断缓存中存在目标数据,即命中缓存,则进一步判断目标数据是否过期,如果未过期,则在缓存中读取目标数据,并将目标数据反馈至数据请求方,如果已过期,则同样需要确定当前针对数据库的并行访问请求数量是否小于预设访问阈值,只有在当前针对数据库的并行访问请求未达到阈值,才将所述数据访问请求发送至数据库,在数据库中查找与所述数据访问请求对应的目标数据,而在当前针对数据库的并行访问请求达到阈值时,则需要访问数据库的各请求需要进行抢锁操作,只有获得读取锁的请求才可以对数据库进行访问,而读取锁的数量是固定的,只有已完成数据库访问的请求释放后,其他新的访问请求才可能获取到该读取锁,进而保证了在当前针对数据库的并行访问请求达到阈值后,不会有新增的访问请求到达数据库,采用本申请实施例所提供缓存数据访问方法,在缓存更新或者缓存数据过期的情况下,数据访问请求不会直接穿过缓存访问到后端数据库,进而保证了数据库的正常运行,从而可以实现稳定的数据读取访问。
在一种实施方式中,本申请实施例还提供了一种缓存数据访问装置,用以解决采用现有数据访问方法,在遇到大量的并发数据访问请求时,可能会出现缓存击穿或者缓存雪崩,进而可能会导致服务宕机的问题。该缓存数据访问装置的具体结构示意图如图2所示,包括:缓存命中判断单元21、数据库查询单元22、过期查询单元23以及缓存查询单元24。
其中,缓存命中判断单元21,用于根据接收到的数据访问请求,判断缓存中是否存在与所述数据访问请求对应的目标数据;
数据库查询单元22,用于当缓存命中判断单元得到的判断结果为否时,确定当前针对数据库的第一请求数量,在确定所述第一请求数量小于预设阈值后,将所述数据访问请求发送至数据库,在数据库中查找与所述数据访问请求对应的目标数据,并将所述目标数据反馈至所述数据访问请求对应的数据请求方,其中,所述第一请求数量为当前针对所述数据库的所有并行访问请求的数量;
过期查询单元23,用于当缓存命中判断判断结果为是时,确定所述缓存中的目标数据是否过期;
缓存查询单元24,用于当过期查询单元确定所述缓存中的目标数据未过期时,则在所述缓存中读取目标数据,并将所述目标数据反馈至所述数据请求方;
数据库查询单元22,用于当过期查询单元确定所述缓存中的目标数据已过期时,在确定所述第一请求数量小于预设阈值后,将所述数据访问请求发送至数据库,在数据库中查找与所述数据访问请求对应的目标数据。
在一种实施方式中,缓存查询单元24,具体用于:判断所述缓存中的目标数据是否需要刷新;当判断所述目标数据不需要刷新时,则在所述缓存中读取所述目标数据;当判断所述目标数据需要刷新时,根据所述第一请求数量,确定是否对所述目标数据进行更新;当所述第一请求数量小于预设阈值时,则在数据库中读取与所述数据访问请求对应的更新数据,将所述更新数据反馈至所述数据请求方,并根据所述更新数据,对缓存中的目标数据进行更新;当所述第一请求数量大于预设阈值时,则在所述缓存中读取目标数据,并将所述目标数据反馈至所述数据请求方。
在一种实施方式中,还包括刷新单元,具体用于:判断所述数据访问请求是否获取到更新锁;当判断结果为是时,则在数据库中读取与所述数据访问请求对应的更新数据,并根据所述更新数据对缓存中的目标数据进行更新。
在一种实施方式中,刷新单元,具体用于:确定读取所述目标数据的第二访问请求与所述数据访问请求之间的时间间隔,其中,所述第二访问请求为在所述数据访问请求前一条接收到的、针对所述目标数据的访问请求;判断所述时间间隔是否大于预设的刷新间隔时间;当判断结果为是时,则确定所述缓存中的目标数据需要刷新;当判断结果为否时,则确定所述缓存中的目标数据不需要刷新。
在一种实施方式中,数据库查询单元22,还用于:当确定所述缓存中的目标数据已过期,且确定所述第一请求数量大于预设阈值时,判断所述数据访问请求是否获取到读取锁;当判断结果为是时,将所述数据访问请求发送至数据库,在数据库中查找与所述数据访问请求对应的目标数据。
采用本申请实施例提供的一种缓存数据访问装置,在接收到数据访问请求后,首先判断缓存中是否存在与所述数据访问请求对应的目标数据,如果不存在,即未命中缓存,在穿透缓存访问后端数据库之前,将会确定当前针对数据的并行访问请求数量,如果当前针对数据库的并行访问请求数量小于预设访问阈值,即说明此时数据库的访问量未达到阈值,新增访问不会对数据库正常运行造成影响,则在这种情况下可以将数据访问请求发送至数据库,在数据库中查找与所述数据访问请求对应的目标数据,并将所述目标数据反馈至所述数据访问请求对应的数据请求方;而如果判断缓存中存在目标数据,即命中缓存,则进一步判断目标数据是否过期,如果未过期,则在缓存中读取目标数据,并将目标数据反馈至数据请求方,如果已过期,则同样需要确定当前针对数据库的并行访问请求数量是否小于预设访问阈值,只有在当前针对数据库的并行访问请求未达到阈值,才将所述数据访问请求发送至数据库,在数据库中查找与所述数据访问请求对应的目标数据,而在当前针对数据库的并行访问请求达到阈值时,则需要访问数据库的各请求需要进行抢锁操作,只有获得读取锁的请求才可以对数据库进行访问,而读取锁的数量是固定的,只有已完成数据库访问的请求释放后,其他新的访问请求才可能获取到该读取锁,进而保证了在当前针对数据库的并行访问请求达到阈值后,不会有新增的访问请求到达数据库,采用本申请实施例所提供缓存数据访问方法,在缓存更新或者缓存数据过期的情况下,数据访问请求不会直接穿过缓存访问到后端数据库,进而保证了数据库的正常运行,从而可以实现稳定的数据读取访问。
图3是本申请的一个实施例电子设备的结构示意图。请参考图3,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(Random-Access Memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。
处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(PeripheralComponent Interconnect,外设部件互连标准)总线或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图3中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。
处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成缓存数据访问装置。处理器,执行存储器所存放的程序,并具体用于执行以下操作:
根据接收到的数据访问请求,判断缓存中是否存在与所述数据访问请求对应的目标数据;当判断结果为否时,确定当前针对数据库的第一请求数量,在确定所述第一请求数量小于预设阈值后,将所述数据访问请求发送至数据库,在数据库中查找与所述数据访问请求对应的目标数据,并将所述目标数据反馈至所述数据访问请求对应的数据请求方,其中,所述第一请求数量为当前针对所述数据库的所有并行访问请求的数量;当判断结果为是时,确定所述缓存中的目标数据是否过期;当确定所述缓存中的目标数据未过期时,则在所述缓存中读取目标数据,并将所述目标数据反馈至所述数据请求方;当确定所述缓存中的目标数据已过期时,在确定所述第一请求数量小于预设阈值后,将所述数据访问请求发送至数据库,在数据库中查找与所述数据访问请求对应的目标数据。
上述如本申请图3所示实施例揭示的缓存数据访问电子设备执行的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(Central ProcessingUnit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
当然,除了软件实现方式之外,本申请的电子设备并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
本申请实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的便携式电子设备执行时,能够使该便携式电子设备执行图1所示实施例的方法,并具体用于执行以下操作:
根据接收到的数据访问请求,判断缓存中是否存在与所述数据访问请求对应的目标数据;当判断结果为否时,确定当前针对数据库的第一请求数量,在确定所述第一请求数量小于预设阈值后,将所述数据访问请求发送至数据库,在数据库中查找与所述数据访问请求对应的目标数据,并将所述目标数据反馈至所述数据访问请求对应的数据请求方,其中,所述第一请求数量为当前针对所述数据库的所有并行访问请求的数量;当判断结果为是时,确定所述缓存中的目标数据是否过期;当确定所述缓存中的目标数据未过期时,则在所述缓存中读取目标数据,并将所述目标数据反馈至所述数据请求方;当确定所述缓存中的目标数据已过期时,在确定所述第一请求数量小于预设阈值后,将所述数据访问请求发送至数据库,在数据库中查找与所述数据访问请求对应的目标数据。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、***或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种缓存数据访问方法,其特征在于,包括:
根据接收到的数据访问请求,判断缓存中是否存在与所述数据访问请求对应的目标数据;
当判断结果为否时,确定当前针对数据库的第一请求数量,在确定所述第一请求数量小于预设阈值后,将所述数据访问请求发送至数据库,在数据库中查找与所述数据访问请求对应的目标数据,并将所述目标数据反馈至所述数据访问请求对应的数据请求方,其中,所述第一请求数量为当前针对所述数据库的所有并行访问请求的数量;
当判断结果为是时,确定所述缓存中的目标数据是否过期;
当确定所述缓存中的目标数据未过期时,则在所述缓存中读取目标数据,并将所述目标数据反馈至所述数据请求方;
当确定所述缓存中的目标数据已过期时,在确定所述第一请求数量小于预设阈值后,将所述数据访问请求发送至数据库,在数据库中查找与所述数据访问请求对应的目标数据。
2.根据权利要求1所述的方法,其特征在于,所述当确定所述缓存中的目标数据未过期时,则在所述缓存中读取目标数据,并将所述目标数据反馈至所述数据请求方,具体包括:
判断所述缓存中的目标数据是否需要刷新;
当判断所述目标数据不需要刷新时,则在所述缓存中读取所述目标数据;
当判断所述目标数据需要刷新时,根据所述第一请求数量,确定是否对所述目标数据进行更新;
当所述第一请求数量小于预设阈值时,则在数据库中读取与所述数据访问请求对应的更新数据,将所述更新数据反馈至所述数据请求方,并根据所述更新数据,对缓存中的目标数据进行更新;
当所述第一请求数量大于预设阈值时,则在所述缓存中读取目标数据,并将所述目标数据反馈至所述数据请求方。
3.根据权利要求2所述的方法,其特征在于,所述当所述第一请求数量大于预设阈值时,则在所述缓存中读取目标数据,并将所述目标数据反馈至所述数据请求方后,还包括:
判断所述数据访问请求是否获取到更新锁;
当判断结果为是时,则在数据库中读取与所述数据访问请求对应的更新数据,并根据所述更新数据对缓存中的目标数据进行更新。
4.根据权利要求2所述的方法,其特征在于,所述判断所述缓存中的目标数据是否需要刷新,具体包括:
确定读取所述目标数据的第二访问请求与所述数据访问请求之间的时间间隔,其中,所述第二访问请求为在所述数据访问请求前一条接收到的、针对所述目标数据的访问请求;
判断所述时间间隔是否大于预设的刷新间隔时间;
当判断结果为是时,则确定所述缓存中的目标数据需要刷新;
当判断结果为否时,则确定所述缓存中的目标数据不需要刷新。
5.根据权利要求1所述的方法,其特征在于,还包括:
当确定所述缓存中的目标数据已过期,且确定所述第一请求数量大于预设阈值时,判断所述数据访问请求是否获取到读取锁;
当判断结果为是时,将所述数据访问请求发送至数据库,在数据库中查找与所述数据访问请求对应的目标数据。
6.一种缓存数据访问装置,其特征在于,包括:
缓存命中判断单元,用于根据接收到的数据访问请求,判断缓存中是否存在与所述数据访问请求对应的目标数据;
数据库查询单元,用于当缓存命中判断单元得到的判断结果为否时,确定当前针对数据库的第一请求数量,在确定所述第一请求数量小于预设阈值后,将所述数据访问请求发送至数据库,在数据库中查找与所述数据访问请求对应的目标数据,并将所述目标数据反馈至所述数据访问请求对应的数据请求方,其中,所述第一请求数量为当前针对所述数据库的所有并行访问请求的数量;
过期查询单元,用于当缓存命中判断判断结果为是时,确定所述缓存中的目标数据是否过期;
缓存查询单元,用于当过期查询单元确定所述缓存中的目标数据未过期时,则在所述缓存中读取目标数据,并将所述目标数据反馈至所述数据请求方;
数据库查询单元,用于当过期查询单元确定所述缓存中的目标数据已过期时,在确定所述第一请求数量小于预设阈值后,将所述数据访问请求发送至数据库,在数据库中查找与所述数据访问请求对应的目标数据。
7.根据权利要求6所述的装置,其特征在于,所述缓存查询单元,具体用于:
判断所述缓存中的目标数据是否需要刷新;
当判断所述目标数据不需要刷新时,则在所述缓存中读取所述目标数据;
当判断所述目标数据需要刷新时,根据所述第一请求数量,确定是否对所述目标数据进行更新;
当所述第一请求数量小于预设阈值时,则在数据库中读取与所述数据访问请求对应的更新数据,将所述更新数据反馈至所述数据请求方,并根据所述更新数据,对缓存中的目标数据进行更新;
当所述第一请求数量大于预设阈值时,则在所述缓存中读取目标数据,并将所述目标数据反馈至所述数据请求方。
8.根据权利要求7所述的装置,其特征在于,还包括刷新单元,具体用于:
判断所述数据访问请求是否获取到更新锁;
当判断结果为是时,则在数据库中读取与所述数据访问请求对应的更新数据,并根据所述更新数据对缓存中的目标数据进行更新。
9.一种缓存数据访问设备,包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行以下操作:
根据接收到的数据访问请求,判断缓存中是否存在与所述数据访问请求对应的目标数据;
当判断结果为否时,确定当前针对数据库的第一请求数量,在确定所述第一请求数量小于预设阈值后,将所述数据访问请求发送至数据库,在数据库中查找与所述数据访问请求对应的目标数据,并将所述目标数据反馈至所述数据访问请求对应的数据请求方,其中,所述第一请求数量为当前针对所述数据库的所有并行访问请求的数量;
当判断结果为是时,确定所述缓存中的目标数据是否过期;
当确定所述缓存中的目标数据未过期时,则在所述缓存中读取目标数据,并将所述目标数据反馈至所述数据请求方;
当确定所述缓存中的目标数据已过期时,在确定所述第一请求数量小于预设阈值后,将所述数据访问请求发送至数据库,在数据库中查找与所述数据访问请求对应的目标数据。
10.一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行如权利要求1-5任一权项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310110508.6A CN116303590A (zh) | 2023-02-06 | 2023-02-06 | 一种缓存数据访问方法、装置、设备以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310110508.6A CN116303590A (zh) | 2023-02-06 | 2023-02-06 | 一种缓存数据访问方法、装置、设备以及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116303590A true CN116303590A (zh) | 2023-06-23 |
Family
ID=86833385
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310110508.6A Pending CN116303590A (zh) | 2023-02-06 | 2023-02-06 | 一种缓存数据访问方法、装置、设备以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116303590A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116708579A (zh) * | 2023-08-04 | 2023-09-05 | 浪潮电子信息产业股份有限公司 | 数据访问方法、装置、电子设备及计算机可读存储介质 |
CN117573572A (zh) * | 2024-01-12 | 2024-02-20 | 北京开源芯片研究院 | 重填数据的处理方法、装置、设备及存储介质 |
-
2023
- 2023-02-06 CN CN202310110508.6A patent/CN116303590A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116708579A (zh) * | 2023-08-04 | 2023-09-05 | 浪潮电子信息产业股份有限公司 | 数据访问方法、装置、电子设备及计算机可读存储介质 |
CN116708579B (zh) * | 2023-08-04 | 2024-01-12 | 浪潮电子信息产业股份有限公司 | 数据访问方法、装置、电子设备及计算机可读存储介质 |
CN117573572A (zh) * | 2024-01-12 | 2024-02-20 | 北京开源芯片研究院 | 重填数据的处理方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116303590A (zh) | 一种缓存数据访问方法、装置、设备以及存储介质 | |
US6883068B2 (en) | Methods and apparatus for implementing a chche replacement scheme | |
WO2016177283A1 (zh) | 缓存目录刷新方法和装置 | |
US20090070526A1 (en) | Using explicit disk block cacheability attributes to enhance i/o caching efficiency | |
CN109150930B (zh) | 配置信息加载方法及装置、业务处理方法及装置 | |
US20140143493A1 (en) | Bypassing a Cache when Handling Memory Requests | |
CN107430551B (zh) | 数据缓存方法、存储控制装置、及存储设备 | |
CN107301215B (zh) | 一种搜索结果缓存方法及装置、搜索方法及装置 | |
US20130290636A1 (en) | Managing memory | |
US9465743B2 (en) | Method for accessing cache and pseudo cache agent | |
CN110908965A (zh) | 一种对象存储管理方法、装置、设备及存储介质 | |
CN111382206B (zh) | 一种数据存储方法及装置 | |
CN112214178B (zh) | 一种存储***、数据读取方法及数据写入方法 | |
CN111694806B (zh) | 一种事务日志的缓存方法、装置、设备和存储介质 | |
CN115470026A (zh) | 数据缓存及缓存容灾方法和***、缓存*** | |
CN115080459A (zh) | 缓存管理方法及装置、计算机可读存储介质 | |
CN115934583B (zh) | 分级缓存方法、装置及*** | |
CN110941595A (zh) | 一种文件***访问方法及装置 | |
CN109582233A (zh) | 一种数据的缓存方法和装置 | |
KR101884726B1 (ko) | 데이터베이스 시스템에서 블록을 판독하기 위한 방법, 장치 및 컴퓨터 판독가능 매채에 저장된 컴퓨터-프로그램 | |
US20210294749A1 (en) | Caching assets in a multiple cache system | |
CN102662866B (zh) | 一种文件cache管理方法及内存管理*** | |
CN115509437A (zh) | 存储***、网卡、处理器、数据访问方法、装置及*** | |
CN113297106A (zh) | 基于混合存储的数据置换方法、相关方法及装置和*** | |
AU2016277745A1 (en) | Linked-list-based method and device for application caching management |
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 |