CN113742381A - 缓存获取方法、设备和计算机可读介质 - Google Patents
缓存获取方法、设备和计算机可读介质 Download PDFInfo
- Publication number
- CN113742381A CN113742381A CN202111004002.4A CN202111004002A CN113742381A CN 113742381 A CN113742381 A CN 113742381A CN 202111004002 A CN202111004002 A CN 202111004002A CN 113742381 A CN113742381 A CN 113742381A
- Authority
- CN
- China
- Prior art keywords
- cache
- actual
- service
- value
- time
- 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.)
- Granted
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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开提供了一种缓存获取方法、设备和计算机可读介质,该方法包括以下步骤:接收传入的缓存相关参数,其中,缓存相关参数包括缓存值的键及刷新间隔;基于键,获取实际缓存对象;响应于实际缓存对象中的最后刷新时间与当前时刻之间的间隔大于或等于刷新间隔,触发异步缓存刷新逻辑以返回实际缓存对象中的业务缓存值。本公开提供的用于防止缓存击穿的缓存获取方法、设备和计算机可读介质,可以有效地使缓存动态刷新,能够通过一个统一的工具类获取缓存,利用一系列防止缓存击穿的缓存相关参数,作为获取缓存的入口,在其中封装所有防止缓存击穿的逻辑,从而提供更加稳定、实时、简易化的策略来防止缓存击穿,提升了软件开发效率。
Description
技术领域
本公开涉及计算机软件技术领域,特别涉及一种用于防止缓存击穿的缓存获取方法、设备和计算机可读介质。
背景技术
随着软件用户量越来越多,流量提升到达数据库吞吐量瓶颈时软件开发人员往往会在流量到达数据库前加一道缓存层,通过查询缓存数据的方式减轻数据库压力从而提高***整体的查询性能与吞吐量。
参考图2所示,添加了缓存层后的***模型主要包括四个组成部分:客户端、服务端、缓存、数据库。其中,客户端是指实际发送数据请求的端,而服务端就是提供数据请求服务的程序,接收到客户端的请求后会去对应的缓存层中查询,若根据请求参数查询到了对应的缓存数据则直接返回,若未查询到则会查询数据库并返回数据。
在为应用增加缓存层时,如果由于缓存到期、冷启动等原因导致缓存失效,此时恰好遇到大量的并发请求,这些请求将直接穿过缓存访问到后端数据从而导致服务或数据库压力陡增,最终将降低***的吞吐量和响应速度,严重的甚至会导致服务宕机。这种缓存失效时又突然面临大量请求的场景就被称为缓存击穿。
目前,面临缓存击穿场景时主流的解决方式一般为以下两种:
1、加互斥锁的方式。在并发的多个请求中,只有第一个请求线程能拿到锁并执行数据库查询操作,其他的线程拿不到锁就阻塞等待,等到第一个线程将数据写入缓存后,直接走缓存。
2、热点数据永不过期的方式。直接将缓存设置为不过期,然后由定时任务去异步加载数据,更新缓存。这种方式适用于比较极端的场景,例如,流量非常大的场景,可以保证每次获取缓存都必定有数据。
但是,以上两种解决方式都具有以下明显的缺陷,导致无法有效地满足各项需求。
加互斥锁的方式,刷新缓存会使多个线程在程序中阻塞,只能缓解数据库的压力不能缓解服务本身的压力。如果创建的线程数达到了操作***的上限,或者内存被创建的线程消耗完毕,则会导致程序本身的崩溃。
使缓存永不过期然后使用定时任务刷新的方式,由于其定时刷新特性,使用时需要开发人员考虑业务能接受的数据不一致的时间。还有对于异常情况的处理,如果某一次刷新时由于服务和缓存层的网络出现问题导致缓存刷新不上,就会导致好几个刷新窗口期间一直是脏数据。
而且,在***中引入定时任务的方式由于需要保证定时任务的可靠性,因此必须得用分布式定时任务解决方案,需要在主逻辑之外的独立线程或进程中执行更新逻辑,会增加***的复杂度。并且定时更新时不一定数据有变化,在无人访问时段刷新更是没有意义。
综上所述,目前的解决缓存击穿的方式,存在使用缓存层遇到的缓存击穿场景难以防护、解决方案实现复杂、效率低等问题。
发明内容
本公开的主要目的在于,提供一种用于防止缓存击穿的缓存获取方法、设备和计算机可读介质,以改善现有技术中存在的上述缺陷。
本公开是通过下述技术方案来解决上述技术问题:
作为本公开的一方面,提供一种缓存获取方法,包括以下步骤:
接收传入的缓存相关参数,其中,所述缓存相关参数包括缓存值的键及刷新间隔;
基于所述键,获取实际缓存对象;以及,
响应于所述实际缓存对象中的最后刷新时间与当前时刻之间的间隔大于或等于所述刷新间隔,触发异步缓存刷新逻辑以返回所述实际缓存对象中的业务缓存值。
可选地,所述缓存相关参数还包括用于加载缓存值的dataLoader函数(数据加载器);
所述基于所述键,获取实际缓存对象的步骤,包括:
响应于获取不到所述键对应的实际缓存对象,执行所述dataLoader函数以得到业务缓存值;
创建实际缓存对象,在所述实际缓存对象中设置业务缓存值并将当前时刻作为最后刷新时间;
将所述实际缓存对象保存至缓存服务;
返回通过执行所述dataLoader函数得到的业务缓存值。
可选地,所述缓存相关参数还包括用于刷新线程的持有分布式锁的最大锁定时间;
所述响应于所述实际缓存对象中的最后刷新时间与当前时刻之间的间隔大于或等于所述刷新间隔,触发异步缓存刷新逻辑以返回所述实际缓存对象中的业务缓存值的步骤,具体包括:
响应于所述实际缓存对象中的最后刷新时间与当前时刻之间的间隔大于或等于所述刷新间隔,创建新线程以执行异步缓存刷新逻辑;
通过新线程根据所述键获取一个分布式锁,其中,将所述最大锁定时间作为锁定的最大时间;
响应于获取到所述锁,执行所述dataLoader函数以得到需要缓存的业务缓存值;
创建实际缓存对象,在所述实际缓存对象中设置业务缓存值并将当前时刻作为最后刷新时间;
将实际缓存对象保存到缓存服务,并且释放当前线程持有的分布式锁。
可选地,所述创建新线程以执行异步缓存刷新逻辑的步骤,包括:
返回已存在的实际缓存对象中的业务缓存值,并且创建新线程以执行异步缓存刷新逻辑。
可选地,所述返回已存在的实际缓存对象中的业务缓存值的步骤,包括:
无阻塞返回已存在的实际缓存对象中的业务缓存值。
可选地,所述基于所述键,获取实际缓存对象的步骤,包括:
响应于获取到所述键对应的实际缓存对象,取出并返回所述实际缓存对象中的业务缓存值。
可选地,还包括:
响应于所述实际缓存对象中的最后刷新时间与当前时刻之间的间隔小于所述刷新间隔,返回所述实际缓存对象中的业务缓存值。
可选地,所述缓存相关参数还包括所述键的实际过期时间。
作为本公开的另一方面,提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行计算机程序时实现如上述的缓存获取方法。
作为本公开的另一方面,提供一种计算机可读介质,其上存储有计算机指令,所述计算机指令在由处理器执行时实现如上述的缓存获取方法。
根据本公开内容,本领域技术人员可以理解本公开内容的其它方面。
本公开的积极进步效果在于:
本公开提供的用于防止缓存击穿的缓存获取方法、设备和计算机可读介质,可以有效地使缓存动态刷新,能够通过一个统一的工具类获取缓存,利用一系列防止缓存击穿的缓存相关参数,作为获取缓存的入口,在其中封装所有防止缓存击穿的逻辑,从而提供更加稳定、实时、简易化的策略来防止缓存击穿,提升了软件开发效率。
附图说明
在结合以下附图阅读本公开的实施例的详细描述之后,能够更好地理解本公开的所述特征和优点。在附图中,各组件不一定是按比例绘制,并且具有类似的相关特性或特征的组件可能具有相同或相近的附图标记。
图1为根据本公开内容的一实施例的缓存获取方法的流程示意图。
图2为示出请求服务时的场景示意图。
图3为根据本公开内容的一实施例的缓存获取方法的获取缓存时的场景示意图。
图4为根据本公开的另一实施例的实现缓存获取方法的电子设备的结构示意图。
具体实施方式
下面通过实施例的方式进一步说明本公开,但并不因此将本公开限制在所述的实施例范围之中。
应当注意,在说明书中对“一实施例”、“可选实施例”、“另一实施例”等的引用指示所描述的实施例可以包括特定的特征、结构或特性,但是每个实施例可能不一定包括该特定的特征、结构或特性。而且,这样的短语不一定指代相同的实施例。此外,当结合实施例描述特定特征、结构或特性时,无论是否被明确描述,结合其它实施例来实现这样的特征、结构或特性都在相关领域的技术人员的知识范围内。
在本公开内容的描述中,需要理解的是,术语“中心”、“横向”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本公开内容和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本公开内容的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本公开内容的描述中,除非另有说明,“多个”的含义是两个或两个以上。另外,术语“包括”及其任何变形,意图在于覆盖不排他的包含。
在本公开内容的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本公开内容中的具体含义。
这里所使用的术语仅仅是为了描述具体实施例而不意图限制示例性实施例。除非上下文明确地另有所指,否则这里所使用的单数形式“一个”、“一项”还意图包括复数。还应当理解的是,这里所使用的术语“包括”和/或“包含”规定所陈述的特征、整数、步骤、操作、单元和/或组件的存在,而不排除存在或添加一个或更多其他特征、整数、步骤、操作、单元、组件和/或其组合。
为了克服目前存在的上述缺陷,本实施例提供一种缓存获取方法,包括以下步骤:接收传入的缓存相关参数,其中,缓存相关参数包括缓存值的键及刷新间隔;基于键,获取实际缓存对象;以及,响应于实际缓存对象中的最后刷新时间与当前时刻之间的间隔大于或等于刷新间隔,触发异步缓存刷新逻辑以返回实际缓存对象中的业务缓存值。
在本实施例中,可以有效地使缓存动态刷新,能够通过一个统一的工具类获取缓存,利用一系列防止缓存击穿的缓存相关参数,作为获取缓存的入口,在其中封装所有防止缓存击穿的逻辑,从而提供更加稳定、实时、简易化的策略来防止缓存击穿,提升了软件开发效率。
具体地,作为一实施例,参考图1所示,本实施例提供的缓存获取方法,主要包括以下步骤:
步骤101、接收传入的缓存相关参数。
在本步骤中,传入需要的缓存相关参数,作为一优选实施方式,缓存相关参数主要包括缓存值的键(key)、键的实际过期时间(expireTime)、刷新间隔(refreshInterval)、用于刷新线程的持有分布式锁的最大锁定时间(maxCalcTime)以及用于加载缓存值的dataLoader函数。当然,本实施例并不具体限定缓存相关参数,可根据实际需求或可能出现需求进行相应的选择及调整。
参考图3所示,以下具体说明缓存相关参数。
key为需要缓存的值的键,可以通过key找到对应的缓存值。缓存值则为业务需要缓存的数据。
在本实施例中,实际缓存对象为真实存入缓存层的数据模型,在真实需要缓存的业务缓存值外包裹了一层,额外包含了最后一次更新缓存数据的时间。将此实际缓存对象代替传入的业务缓存对象保存到缓存层,即可在后续获取时通过对最后更新时间做判定来决定是否触发异步缓存刷新逻辑。
expireTime为缓存的实际过期时间,若缓存没有任何更新操作将在指定的缓存时间后过期,即物理删除无法访问。
refreshInterval为缓存可触发刷新机制的间隔,在获取缓存时若实际缓存对象中的最后刷新时间与当前时刻之间的间隔大于或等于所述刷新间隔,则另起一个线程在后台执行缓存刷新逻辑。可以将refreshInterval理解为逻辑上的缓存过期时间。
其中,在后台执行缓存刷新逻辑的线程使用分布式锁机制保证刷新逻辑只会同时存在一个。本次请求仍然返回实际缓存对象中的缓存值。
maxCalcTime为分布式锁的最大锁定时间,也是最大计算新缓存值的时间,其目的是为了确保在锁的持有人因***负载、网络等原因导致一直未释放锁时可以让锁自然过期。在持有锁超过maxCalcTime设置的时间后该锁将被自动释放,新的获取缓存请求到来即可再次触发缓存刷新逻辑。
数据加载器dataLoader为加载业务缓存值的函数,由调用端自行定义函数内的计算逻辑,通过该函数得到的对象则为需要真实缓存的对象。会在通过Key获取缓存为空和达到刷新间隔refreshInterval触发刷新机制时回调,刷新缓存完毕后将重新设置过期时间expireTime。
步骤102、基于所述键,获取实际缓存对象。
在本步骤中,响应于获取到键对应的实际缓存对象,取出并返回所述实际缓存对象中的业务缓存值。
在本步骤中,响应于获取不到所述键对应的实际缓存对象,具体包括以下步骤:
步骤1021、执行dataLoader函数以得到业务需要缓存的业务缓存值;
步骤1022、创建实际缓存对象,在实际缓存对象中设置业务缓存值并将当前时刻作为最后刷新时间;
步骤1023、将实际缓存对象保存至缓存服务;
步骤1024、返回步骤1021生成的业务缓存值。
步骤103、判断实际缓存对象中的最后刷新时间与当前时刻之间的间隔是否大于或等于所述刷新间隔,若是执行步骤104,若否执行步骤105。
在本步骤中,通过步骤102中获得的实际缓存对象,获取实际缓存对象中包含的最后刷新时间字段,并且计算当前时刻与最后刷新时间的间隔,在间隔大于或等于步骤101中传入的refreshInterval时执行步骤104,否则执行步骤105。
步骤104、触发异步缓存刷新逻辑。
作为一可选实施方式,在本步骤中,响应于实际缓存对象中的最后刷新时间与当前时刻之间的间隔小于刷新间隔,具体包括以下步骤:
步骤1041、返回已存在的实际缓存对象中的业务缓存值,创建新线程以执行异步缓存刷新逻辑。
在本实施例中,无阻塞返回已存在的实际缓存对象中的业务缓存值,以保证获取缓存的请求不被阻塞。
步骤1042、通过新线程根据键试图获取一个分布式锁,确保全局只会有一处刷新逻辑正在执行,其中,将最大锁定时间作为锁定的最大时间。
步骤1043、响应于获取到锁,执行dataLoader函数以得到需要缓存的业务缓存值。
步骤1044、创建实际缓存对象,在实际缓存对象中设置业务缓存值并将当前时刻作为最后刷新时间。
步骤1045、将实际缓存对象保存到缓存服务,并且释放当前线程持有的分布式锁。
步骤105、返回实际缓存对象中的业务缓存值。
在本步骤中,响应于实际缓存对象中的最后刷新时间与当前时刻之间的间隔小于刷新间隔,返回实际缓存对象中的业务缓存值。
在本实施例中,还提供利用如上述缓存获取方法的用于防止缓存击穿的缓存获取***,能够使得业务代码仅需通过一个入口执行获取缓存的逻辑,并通过实时判定和无阻塞异步刷新的获取缓存方法来有效地防止了缓存击穿,同时保证稳定、实时、简易化等各方面的指标,从而提升了易用性和软件开发效率,降低了维护成本。
本实施例提供的用于用于防止缓存击穿的缓存获取方法,主要具有以下有益效果:
1、获取缓存和刷新缓存均在一个方法中封装,使用简单;
2、除非缓存为空,否则更新缓存都是异步的,所有试图获取缓存的操作都不会被阻塞,提升了性能;
3、获取缓存时才判定刷新间隔以操作缓存刷新,实时性强,不会在无人访问时刷新,资源利用率高;
4、对于一个缓存的更新,在整个分布式***内,仅会有一个线程在计算,资源消耗低。
图4为根据本实施例提供的一种电子设备的结构示意图。电子设备包括存储器、处理器及存储在存储器上并可在处理器上执行的计算机程序,处理器执行程序时实现如上实施例中的缓存获取方法。图4显示的电子设备30仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图4所示,电子设备30可以以通用计算设备的形式表现,例如其可以为服务器设备。电子设备30的组件可以包括但不限于:上述至少一个处理器31、上述至少一个存储器32、连接不同***组件(包括存储器32和处理器31)的总线33。
总线33包括数据总线、地址总线和控制总线。
存储器32可以包括易失性存储器,例如随机存取存储器(RAM)321和/或高速缓存存储器322,还可以进一步包括只读存储器(ROM)323。
存储器32还可以包括具有一组(至少一个)程序模块324的程序/实用工具325,这样的程序模块324包括但不限于:操作***、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
处理器31通过执行存储在存储器32中的计算机程序,从而执行各种功能应用以及数据处理,例如本公开如上实施例中的缓存获取方法。
电子设备30也可以与一个或多个外部设备34(例如键盘、指向设备等)通信。这种通信可以通过输入/输出(I/O)接口35进行。并且,模型生成的设备30还可以通过网络适配器36与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图4所示,网络适配器36通过总线33与模型生成的设备30的其它模块通信。应当明白,尽管图中未示出,可以结合模型生成的设备30使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID(磁盘阵列)***、磁带驱动器以及数据备份存储***等。
应当注意,尽管在上文详细描述中提及了电子设备的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。
本实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,程序被处理器执行时实现如上实施例中的缓存获取方法中的步骤。
其中,可读存储介质可以采用的更具体可以包括但不限于:便携式盘、硬盘、随机存取存储器、只读存储器、可擦拭可编程只读存储器、光存储器件、磁存储器件或上述的任意合适的组合。
在可能的实施方式中,本公开还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在终端设备上执行时,程序代码用于使终端设备执行实现如上实施例中的缓存获取方法中的步骤。
其中,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开的程序代码,程序代码可以完全地在用户设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户设备上部分在远程设备上执行或完全在远程设备上执行。
虽然以上描述了本公开的具体实施方式,但是本领域的技术人员应当理解,这仅是举例说明,本公开的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本公开的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本公开的保护范围。
Claims (10)
1.一种缓存获取方法,其特征在于,包括以下步骤:
接收传入的缓存相关参数,其中,所述缓存相关参数包括缓存值的键及刷新间隔;
基于所述键,获取实际缓存对象;以及,
响应于所述实际缓存对象中的最后刷新时间与当前时刻之间的间隔大于或等于所述刷新间隔,触发异步缓存刷新逻辑以返回所述实际缓存对象中的业务缓存值。
2.如权利要求1所述的缓存获取方法,其特征在于,所述缓存相关参数还包括用于加载缓存值的dataLoader函数;
所述基于所述键,获取实际缓存对象的步骤,包括:
响应于获取不到所述键对应的实际缓存对象,执行所述dataLoader函数以得到业务缓存值;
创建实际缓存对象,在所述实际缓存对象中设置业务缓存值并将当前时刻作为最后刷新时间;
将所述实际缓存对象保存至缓存服务;
返回通过执行所述dataLoader函数得到的业务缓存值。
3.如权利要求2所述的缓存获取方法,其特征在于,所述缓存相关参数还包括用于刷新线程的持有分布式锁的最大锁定时间;
所述响应于所述实际缓存对象中的最后刷新时间与当前时刻之间的间隔大于或等于所述刷新间隔,触发异步缓存刷新逻辑以返回所述实际缓存对象中的业务缓存值的步骤,具体包括:
响应于所述实际缓存对象中的最后刷新时间与当前时刻之间的间隔大于或等于所述刷新间隔,创建新线程以执行异步缓存刷新逻辑;
通过新线程根据所述键获取一个分布式锁,其中,将所述最大锁定时间作为锁定的最大时间;
响应于获取到所述锁,执行所述dataLoader函数以得到需要缓存的业务缓存值;
创建实际缓存对象,在所述实际缓存对象中设置业务缓存值并将当前时刻作为最后刷新时间;
将实际缓存对象保存到缓存服务,并且释放当前线程持有的分布式锁。
4.如权利要求3所述的缓存获取方法,其特征在于,所述创建新线程以执行异步缓存刷新逻辑的步骤,包括:
返回已存在的实际缓存对象中的业务缓存值,并且创建新线程以执行异步缓存刷新逻辑。
5.如权利要求4所述的缓存获取方法,其特征在于,所述返回已存在的实际缓存对象中的业务缓存值的步骤,包括:
无阻塞返回已存在的实际缓存对象中的业务缓存值。
6.如权利要求1所述的缓存获取方法,其特征在于,所述基于所述键,获取实际缓存对象的步骤,包括:
响应于获取到所述键对应的实际缓存对象,取出并返回所述实际缓存对象中的业务缓存值。
7.如权利要求1所述的缓存获取方法,其特征在于,还包括:
响应于所述实际缓存对象中的最后刷新时间与当前时刻之间的间隔小于所述刷新间隔,返回所述实际缓存对象中的业务缓存值。
8.如权利要求1所述的缓存获取方法,其特征在于,所述缓存相关参数还包括所述键的实际过期时间。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行计算机程序时实现如权利要求1~8中任意一项所述的缓存获取方法。
10.一种计算机可读介质,其上存储有计算机指令,其特征在于,所述计算机指令在由处理器执行时实现如权利要求1~8中任意一项所述的缓存获取方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111004002.4A CN113742381B (zh) | 2021-08-30 | 2021-08-30 | 缓存获取方法、设备和计算机可读介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111004002.4A CN113742381B (zh) | 2021-08-30 | 2021-08-30 | 缓存获取方法、设备和计算机可读介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113742381A true CN113742381A (zh) | 2021-12-03 |
CN113742381B CN113742381B (zh) | 2023-07-25 |
Family
ID=78733778
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111004002.4A Active CN113742381B (zh) | 2021-08-30 | 2021-08-30 | 缓存获取方法、设备和计算机可读介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113742381B (zh) |
Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6643289B1 (en) * | 1999-12-29 | 2003-11-04 | 3Com Corporation | Method of MPOA status change notification |
CN105373369A (zh) * | 2014-08-25 | 2016-03-02 | 北京皮尔布莱尼软件有限公司 | 一种异步缓存方法、服务器及*** |
CN105630812A (zh) * | 2014-10-30 | 2016-06-01 | 阿里巴巴集团控股有限公司 | 集群应用缓存刷新方法及装置 |
US20170060952A1 (en) * | 2014-09-02 | 2017-03-02 | Akamai Technologies, Inc. | System and methods for leveraging an object cache to monitor network traffic |
CN106502589A (zh) * | 2016-10-21 | 2017-03-15 | 普元信息技术股份有限公司 | 基于云计算实现缓存的加载或持久化的***及方法 |
CN106815287A (zh) * | 2016-12-06 | 2017-06-09 | ***股份有限公司 | 一种缓存管理方法及装置 |
CN106844784A (zh) * | 2017-03-14 | 2017-06-13 | 上海网易小额贷款有限公司 | 数据缓存方法、装置及计算机可读存储介质 |
US20170337648A1 (en) * | 2016-05-20 | 2017-11-23 | HomeAway.com, Inc. | Hierarchical panel presentation responsive to incremental search interface |
CN109032771A (zh) * | 2018-05-31 | 2018-12-18 | 深圳壹账通智能科技有限公司 | 本地缓存方法、装置、计算机设备和存储介质 |
US20190043458A1 (en) * | 2017-12-29 | 2019-02-07 | Intel Corporation | Extending asynchronous frame updates with full frame and partial frame notifications |
CN110865768A (zh) * | 2018-08-27 | 2020-03-06 | 中兴通讯股份有限公司 | 写缓存资源分配方法、装置、设备以及存储介质 |
CN111414392A (zh) * | 2020-03-25 | 2020-07-14 | 浩鲸云计算科技股份有限公司 | 高速缓存异步刷新方法、***及计算机可读存储介质 |
CN111966719A (zh) * | 2020-10-21 | 2020-11-20 | 四川新网银行股份有限公司 | 一种分布式消费信贷***本地数据缓存实时刷新的方法 |
CN112486948A (zh) * | 2020-11-25 | 2021-03-12 | 福建省数字福建云计算运营有限公司 | 一种实时数据处理方法 |
CN113010278A (zh) * | 2021-02-19 | 2021-06-22 | 建信金融科技有限责任公司 | 一种用于财险核心***的批处理方法及*** |
CN113312391A (zh) * | 2021-06-01 | 2021-08-27 | 上海万物新生环保科技集团有限公司 | 一种缓存异步延时刷新的方法及设备 |
-
2021
- 2021-08-30 CN CN202111004002.4A patent/CN113742381B/zh active Active
Patent Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6643289B1 (en) * | 1999-12-29 | 2003-11-04 | 3Com Corporation | Method of MPOA status change notification |
CN105373369A (zh) * | 2014-08-25 | 2016-03-02 | 北京皮尔布莱尼软件有限公司 | 一种异步缓存方法、服务器及*** |
US20170060952A1 (en) * | 2014-09-02 | 2017-03-02 | Akamai Technologies, Inc. | System and methods for leveraging an object cache to monitor network traffic |
CN105630812A (zh) * | 2014-10-30 | 2016-06-01 | 阿里巴巴集团控股有限公司 | 集群应用缓存刷新方法及装置 |
US20170337648A1 (en) * | 2016-05-20 | 2017-11-23 | HomeAway.com, Inc. | Hierarchical panel presentation responsive to incremental search interface |
CN106502589A (zh) * | 2016-10-21 | 2017-03-15 | 普元信息技术股份有限公司 | 基于云计算实现缓存的加载或持久化的***及方法 |
CN106815287A (zh) * | 2016-12-06 | 2017-06-09 | ***股份有限公司 | 一种缓存管理方法及装置 |
CN106844784A (zh) * | 2017-03-14 | 2017-06-13 | 上海网易小额贷款有限公司 | 数据缓存方法、装置及计算机可读存储介质 |
US20190043458A1 (en) * | 2017-12-29 | 2019-02-07 | Intel Corporation | Extending asynchronous frame updates with full frame and partial frame notifications |
CN109032771A (zh) * | 2018-05-31 | 2018-12-18 | 深圳壹账通智能科技有限公司 | 本地缓存方法、装置、计算机设备和存储介质 |
CN110865768A (zh) * | 2018-08-27 | 2020-03-06 | 中兴通讯股份有限公司 | 写缓存资源分配方法、装置、设备以及存储介质 |
CN111414392A (zh) * | 2020-03-25 | 2020-07-14 | 浩鲸云计算科技股份有限公司 | 高速缓存异步刷新方法、***及计算机可读存储介质 |
CN111966719A (zh) * | 2020-10-21 | 2020-11-20 | 四川新网银行股份有限公司 | 一种分布式消费信贷***本地数据缓存实时刷新的方法 |
CN112486948A (zh) * | 2020-11-25 | 2021-03-12 | 福建省数字福建云计算运营有限公司 | 一种实时数据处理方法 |
CN113010278A (zh) * | 2021-02-19 | 2021-06-22 | 建信金融科技有限责任公司 | 一种用于财险核心***的批处理方法及*** |
CN113312391A (zh) * | 2021-06-01 | 2021-08-27 | 上海万物新生环保科技集团有限公司 | 一种缓存异步延时刷新的方法及设备 |
Non-Patent Citations (1)
Title |
---|
丁益华等: "洋山港四期自动化码头任务调度***优化", 《港口科技》, pages 16 - 21 * |
Also Published As
Publication number | Publication date |
---|---|
CN113742381B (zh) | 2023-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8352517B2 (en) | Infrastructure for spilling pages to a persistent store | |
EP2973018B1 (en) | A method to accelerate queries using dynamically generated alternate data formats in flash cache | |
US7421562B2 (en) | Database system providing methodology for extended memory support | |
RU2438165C2 (ru) | Устройство и способы для уменьшения вытеснений в многоуровневой иерархии кэша | |
US8819074B2 (en) | Replacement policy for resource container | |
CN101388824B (zh) | 一种机群***中分片存储模式下文件读取的方法及*** | |
US20130290636A1 (en) | Managing memory | |
CN114860770B (zh) | 基于数据服务的优化方法、***、计算机设备及介质 | |
CN108614847A (zh) | 一种数据的缓存方法及*** | |
US8341368B2 (en) | Automatic reallocation of structured external storage structures | |
CN110990483B (zh) | 分布式缓存中的缓存节点的数据访问和控制方法及*** | |
CN113742381A (zh) | 缓存获取方法、设备和计算机可读介质 | |
CN116450966A (zh) | 缓存访问方法及装置、设备、存储介质 | |
CN112948399B (zh) | 序列号生成方法、装置、计算机设备和存储介质 | |
US7974955B2 (en) | Inhibiting non-critical access based on measured performance in a database system | |
US20060059176A1 (en) | Suspending a result set and continuing from a suspended result set | |
CN109739516B (zh) | 一种云缓存的运行方法及*** | |
CN111563106A (zh) | 一种数据缓存方法、装置、***及可读存储介质 | |
CN116842299B (zh) | 动态数据访问风险控制***与方法 | |
CN111949687B (zh) | 基于共享内存和多进程的分布式数据库架构及其实现方法 | |
CN115858419B (zh) | 元数据管理方法、装置、设备、服务器及可读存储介质 | |
CN111858655A (zh) | 一种基于内存计算的静态数据的查询方法和设备 | |
Kuhn et al. | Memory Structures | |
CN114896281A (zh) | 一种数据处理的方法、***以及电子设备 | |
CN117744136A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |