兼顾快速响应和数据更新的数据缓存方法及系统技术方案

技术编号:21246521 阅读:31 留言:0更新日期:2019-06-01 07:04
本发明专利技术公开了一种兼顾快速响应和数据更新的数据缓存方法和系统,S1确定缓存数据的存活时间、最小有效期及最大有效期;S2比较步骤S1确定的所述存活时间与所述最小有效期及所述最大有效期;和S3基于步骤S2所述比较的结果确定缓存策略。本发明专利技术有益效果:不仅能够达到快速响应,而且兼顾在预期时间内更新数据。

Data Caching Method and System Considering Fast Response and Data Update

The invention discloses a data caching method and system that takes into account both rapid response and data update. S1 determines the survival time, minimum validity period and maximum validity period of the cached data; S2 compares the said survival time with the minimum validity period and the maximum validity period; and S3 determines the caching strategy based on the results of the comparison described in S 2. The invention has the beneficial effect that not only the fast response can be achieved, but also the data can be updated within the expected time.

【技术实现步骤摘要】
兼顾快速响应和数据更新的数据缓存方法及系统
本专利技术涉及通信领域,具体来说,涉及一种兼顾快速响应和数据更新的数据缓存方法及系统。
技术介绍
在软件系统开发过程中,一些数据查询时间长,而请求频率高,如果每次都实时查询数据,会导致数据请求响应很慢,特别在数据是需要大量计算得到的情况下,会消耗大量的服务器资源。为了快速响应数据请求,在不要求数据实时更新的情况下,往往会对数据进行缓存(比如使用redis,memcache等组件进行数据缓存),数据缓存后,在数据请求时,从缓存中获取数据,能够快速返回数据,解决了快速响应问题,但是引来了数据更新问题。目前,一般采用对缓存数据设置过期时间,当缓存数据过期后,就重新查询数据,查询到数据后,放到缓存中,同时返回数据,由于查询数据时间长,在此时就会出现数据请求响应很慢的情况:例如一个兼顾快速响应和数据更新的数据缓存时间为10s,那就意味着每10s会出现一次对数据请求响应慢。针对相关技术中的问题,目前尚未提出有效的解决方案。
技术实现思路
针对相关技术中的上述技术问题,本专利技术提出一种兼顾快速响应和数据更新的数据缓存方法及系统,能够对数据想缓存的同时解决数据更新问题,不阻塞数据请求,以达到兼顾快速响应和数据更新。为实现上述技术目的,本专利技术的技术方案是这样实现的:一种兼顾快速响应和数据更新的数据缓存方法,包括以下步骤:S1确定缓存数据的存活时间、最小有效期及最大有效期;S2比较步骤S1确定的所述存活时间与所述最小有效期及所述最大有效期;和S3基于步骤S2所述比较的结果确定缓存策略。进一步地,步骤S3中:当所述的存活时间在最小有效期时,直接返回缓存数据。进一步地,步骤S3中:当所述的存活时间在最小有效期和最大有效期之间时,触发数据更新请求到请求队列,然后返回缓存数据,处理数据更新的线程池处理请求队列里的请求,更新缓存数据。本专利技术另一方面,提供一种兼顾快速响应和数据更新的数据缓存系统,包括:第一确定模块,用于确定缓存数据的存活时间、最小有效期及最大有效期;比较模块,用于比较确定的所述存活时间与所述最小有效期及所述最大有效期;和第二确定模块,用于基于所述比较的结果确定缓存策略。进一步地,所述第二确定模块中:当所述的存活时间在最小有效期时,直接返回缓存数据。进一步地,所述第二确定模块中:当所述的存活时间在最小有效期和最大有效期之间时,触发数据更新请求到请求队列,然后返回缓存数据,处理数据更新的线程池处理请求队列里的请求,更新缓存数据。本专利技术的有益效果:不仅能够达到快速响应,而且兼顾在预期时间内更新数据。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是根据本专利技术实施例所述的兼顾快速响应和数据更新的数据缓存方法的流程图;图2是根据本专利技术实施例所述的兼顾快速响应和数据更新的数据缓存方法的示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本专利技术保护的范围。如图1所示,根据本专利技术实施例所述的一种兼顾快速响应和数据更新的数据缓存方法,包括以下步骤:S1确定缓存数据的存活时间、最小有效期及最大有效期;S2比较步骤S1确定的所述存活时间与所述最小有效期及所述最大有效期;和S3基于步骤S2所述比较的结果确定缓存策略。在本专利技术的一个具体实施例中,步骤S3中:当所述的存活时间在最小有效期时,直接返回缓存数据。在本专利技术的一个具体实施例中,步骤S3中:当所述的存活时间在最小有效期和最大有效期之间时,触发数据更新请求到请求队列,然后返回缓存数据,处理数据更新的线程池处理请求队列里的请求,更新缓存数据。数据缓存是指将数据存储在能快速读取的位置,可以存在内存中,也可以存储在一些常用的组件中,比如redis,memcache等。定义cacheData,包含属性data,uniqueId,st,t1,t2,以下具体说明:cacheData:指缓存数据包,就是最终要放入缓存中的数据包;data:指要请求的数据,也是最终要返回的数据;uniqueId:指数据data的唯一标识,例如用户信息可以采用用户ID作为唯一标识,显示的产品数量可以用自定义的key_product_count表示;st:指缓存数据包创建或者更新的时间,单位毫秒;也表示缓存数据包存活的起始时间,当创建或者更新缓存数据包时,st都会设置为当前时间;t1:指缓存的最小有效期,单位毫秒;t2:指缓存的最大有效期,单位毫秒;当前时间用now表示,单位都是毫秒;now–st就能表示缓存数据包cacheData的存活时间。cacheData放入缓存中,是与uniqueId一一对应的,根据uniqueId能够从缓存中获取到cacheData;定义数据请求接口IDataProvider,有方法getData,用来请求新的数据并返回,getData方法的调用是一个耗时的过程;定义数据请求dataRequest,包含数据的唯一标识uniqueId,数据请求接口的实现对象dataProvider;实现数据请求队列requestQueue,是个先进先出的队列,用来存放数据请求。实现线程安全的数组uniqueIdArray,用来存放在队列中或正在处理中的请求的uniqueId。实现处理数据请求的线程池,线程池从数据更求队列中取出请求,处理请求。具体的,构建dataRequest,开始请求数据;S1当收到dataRequest时,根据请求里的uniqueId从缓存中获取数据包cacheData;S2如果cacheData不存在,则直接调用dataRequest中的dataProvider对象的getData方法来获取新的数据data,然后构建新的缓存数据包cacheData,并将cacheData放到缓存中,然后返回数据data;如果cacheData存在,则开始判断cacheData的有效期;如果满足now–st<t1,也就是cacheData的存活时间小于t1,则直接返回cacheData的data值;如果满足now–st>t2,也就是cacheData的存活时间大于t2,则直接调用dataRequest中的dataProvider对象的getData方法来获取新的数据data,然后构建新的缓存数据包cacheData,并将cacheData放到缓存中,然后返回数据data;如果满足now–st>=t1并且now–st<=t2,也就是cacheData的存活时间在t1和t2之间,则将数据请求进入S3;S3当存在同样的数据更新请求时,则直接返回缓存数据;当不存在同样的数据更新请求时,将所述数据请求分别放入所述数据请求队列和/或线程安全的数组中。即判断uniqueIdArray中是否已经存在dataRequest的uniqueId,如果存在,则直接返回cacheDa本文档来自技高网...

【技术保护点】
1.一种兼顾快速响应和数据更新的数据缓存方法,其特征在于,包括以下步骤:S1确定缓存数据的存活时间、最小有效期及最大有效期;S2比较步骤S1确定的所述存活时间与所述最小有效期及所述最大有效期;和S3基于步骤S2所述比较的结果确定缓存策略。

【技术特征摘要】
1.一种兼顾快速响应和数据更新的数据缓存方法,其特征在于,包括以下步骤:S1确定缓存数据的存活时间、最小有效期及最大有效期;S2比较步骤S1确定的所述存活时间与所述最小有效期及所述最大有效期;和S3基于步骤S2所述比较的结果确定缓存策略。2.根据权利要求1所述的数据缓存方法,其特征在于,步骤S3中:当所述的存活时间在最小有效期时,直接返回缓存数据。3.根据权利要求1或2所述的数据缓存方法,其特征在于,步骤S3中:当所述的存活时间在最小有效期和最大有效期之间时,触发数据更新请求到请求队列,然后返回缓存数据,处理数据更新的线程池处理请求队列里的请求,更新缓存数据。4.一种兼顾快速响...

【专利技术属性】
技术研发人员:徐汕梁炬刘明刘强
申请(专利权)人:北京航天云路有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1