分布式缓存和本地缓存的更新方法和系统技术方案

技术编号:13903198 阅读:102 留言:0更新日期:2016-10-26 00:15
本发明专利技术公开了一种分布式缓存和本地缓存的更新方法和系统,包括:建立一分布式缓存,其存储有若干数据项和每一数据项的过期时长,每一数据项分别与一更新键对应;判断分布式缓存内是否存在无效数据项,并在判断结果为是时进入执行:向存在无效数据项的分布式缓存的客户端节点串行插入无效数据项对应的更新键,并在其中一客户端节点的更新键插入成功时,从一数据源中获取无效数据项对应的最新数据项以更新分布式缓存中的无效数据项,并记录无效数据项的更新时刻。本发明专利技术保证只有一个更新键插入成功的客户端节点对数据库进行访问,大大降低了对数据库进行大批量访问所造成的访问压力,不会出现惊群效应,使得数据库能够保持稳定。

【技术实现步骤摘要】

本专利技术涉及一种分布式缓存和本地缓存的更新方法和系统
技术介绍
分布式缓存是由一个服务端实现管理和控制,有多个客户端节点存储数据,可以进一步提高数据的读取速率的缓存系统。而本地缓存是将客户机本地的物理内存划分出一部分空间用来缓冲客户机回写到服务器的数据。通常,分布式缓存内和本地缓存内存储的数据都需要及时更新,以在用户向服务器端访问数据时,能够从缓存内获得最新最准确的数据。然而,现有技术中分布式缓存内的数据在过期时会大批量地向数据源请求最新的数据,易出现惊群效应,从而会对数据库造成极大的访问压力,使得数据库不稳定,因此现有技术中的分布式缓存的更新方法亟待改进。
技术实现思路
本专利技术要解决的技术问题是为了克服现有技术中的分布式缓存内的数据过期时,会大批量地向数据源请求最新的数据,易出现惊群效应,从而会对数据库造成极大的访问压力,使得数据库不稳定的缺陷,提供一种分布式缓存和本地缓存的更新方法和系统。本专利技术是通过下述技术方案解决上述技术问题的:一种分布式缓存的更新方法,其特点在于,包括:S1、建立一分布式缓存,所述分布式缓存内存储有若干数据项和每一数据项的过期时长,每一数据项分别与一更新键对应;S2、根据所述数据项的内容和所述过期时长判断所述分布式缓存内是否存在无效数据项,并在判断结果为是时进入步骤S3,S3、向存在无效数据项的所述分布式缓存的客户端节点串行插入所述无
效数据项对应的更新键,并在其中一客户端节点的更新键插入成功时,从一数据源中获取所述无效数据项对应的最新数据项以更新所述分布式缓存中的所述无效数据项,并记录所述无效数据项的更新时刻。在本方案中,利用争抢更新键的机制更新分布式缓存,有效减少了请求数据源(如DB,database,数据库)的次数,保证了DB的稳定性,彻底实现了缓存跟集群规模请求无关性,有利于集群的横向扩展,并且随着不同集群的机器数量的增加,分摊了各机器填充缓存的请求调用,反而减轻了各机器的负载。利用对数据项是否无效的检测机制,可以实时更新数据,提高客户端的数据新鲜度和响应时间。较佳地,所述数据项的内容包括数据键和所述数据键的键值,步骤S2中根据所述数据项的内容和所述过期时长判断所述分布式缓存内是否存在无效数据项包括:S21、判断所述数据键的键值是否不存在,若是,所述数据项则为无效数据项;若否,执行步骤S22;S22、判断所述数据键的键值是否达到所述过期时长,若是,所述数据项则为无效数据项。较佳地,步骤S21在判断结果为是时,步骤S3中以同步请求的方式执行所述无效数据项的更新;步骤S22在判断结果为是时,步骤S3中以异步请求的方式执行所述无效数据项的更新。较佳地,所述更新键存储于一第二分布式缓存中,所述更新方法包括:S41、判断同一客户端节点的更新键插入失败的次数是否达到一次数阈值,若是,将所述更新键存储于一数据库中。在本方案中,利用第二分布式缓存和数据库存储更新键的机制,提高系统的稳定性,保证了数据项的及时更新和输出。较佳地,步骤S2在外部设备向所述分布式缓存请求所述数据项时执行所述分布式缓存内是否存在无效数据项的判断,或者周期性地执行所述分布式缓存内是否存在无效数据项的判断。较佳地,步骤S3之后还包括:S42、判断所述分布式缓存中的所述无效数据项的更新时长是否超过一时长阈值,若是,返回步骤S3。较佳地,步骤S3中当所述更新键插入失败时以同步请求的方式再次获取分布式缓存内的数据项,和/或,步骤S3中当所述无效数据项更新完成时,以同步请求的方式返回更新了的数据项。本专利技术还提供一种本地缓存的更新方法,其特点在于,其利用如上所述的分布式缓存的更新方法中已更新的数据项更新本地缓存内对应的数据项。较佳地,当利用分布式缓存的更新方法中已更新的数据项更新本地缓存内对应的数据项失败时,通过从所述数据源中获取所述数据项对应的最新数据项的方式更新本地缓存内对应的数据项。本专利技术还提供一种分布式缓存的更新系统,其特点在于,包括一建立模块、一判断模块和一插入并更新模块;所述建立模块用于建立一分布式缓存,所述分布式缓存内存储有若干数据项和每一数据项的过期时长,每一数据项分别与一更新键对应;所述判断模块用于根据所述数据项的内容和所述过期时长判断所述分布式缓存内是否存在无效数据项,并在判断结果为是时调用所述插入并更新模块;所述插入并更新模块用于向存在无效数据项的所述分布式缓存的客户端节点串行插入所述无效数据项对应的更新键,并在其中一客户端节点的更新键插入成功时,从一数据源中获取所述无效数据项对应的最新数据项以更新所述分布式缓存中的所述无效数据项,并记录所述无效数据项的更新时刻。较佳地,所述数据项的内容包括数据键和所述数据键的键值,所述判断模块包括第一判断模块和第二判断模块;所述第一判断模块用于判断所述数据键的键值是否不存在,若是,所述数据项则为无效数据项;若否,调用所述第二判断模块;所述第二判断模块用于判断所述数据键的键值是否达到所述过期时长,
若是,所述数据项则为无效数据项。较佳地,所述插入并更新模块用于在所述第一判断模块的判断结果为是时以同步请求的方式执行所述无效数据项的更新,在所述第二判断模块的判断结果为是时以异步请求的方式执行所述无效数据项的更新。较佳地,所述更新系统还包括第三判断模块,所述第三判断模块用于判断所述分布式缓存中的所述无效数据项的更新时长是否超过一时长阈值,若是,调用所述插入并更新模块。本专利技术还提供一种本地缓存的更新系统,其特点在于,其利用如上所述的分布式缓存的更新系统中已更新的数据项更新本地缓存内对应的数据项。较佳地,还包括一更新模块,所述更新模块用于在利用分布式缓存的更新系统中已更新的数据项更新本地缓存内对应的数据项失败时,通过从所述数据源中获取所述数据项对应的最新数据项的方式更新本地缓存内对应的数据项。本专利技术的积极进步效果在于:本专利技术通过向多个数据项过期的客户端节点串行插入一个更新键,使得仅有插入更新键成功的客户端节点才能执行更新,由于插入更新键的方式是以串行的方式执行,因此多个客户端节点中仅会有一个客户端节点能够插入成功,而其余的客户端节点的数据项会从更新的客户端节点的数据项中同步获得数据的更新。因此能够保证只有一个更新键插入成功的客户端节点对数据库进行访问,大大降低了现有技术中分布式缓存对数据库进行大批量访问所造成的访问压力,不会出现惊群效应,使得数据库能够保持稳定。附图说明图1为本专利技术实施例1的分布式缓存的更新方法流程图。图2为本专利技术实施例3的分布式缓存的更新系统的结构示意图。具体实施方式下面通过实施例的方式进一步说明本专利技术,但并不因此将本专利技术限制在所述的实施例范围之中。实施例1本实施例提供一种分布式缓存的更新方法,如图1所示,包括:步骤101、建立一分布式缓存,所述分布式缓存内存储有若干数据项和每一数据项的过期时长,每一数据项分别与一更新键对应;所述数据项的内容可包括数据键和所述数据键的键值,过期时长是对于每一数据项的存活周期,当超过存活周期时,数据项则为过期数据,一旦过期,数据项内的键值就会自动被删除,而一旦键值被删除后分布式缓存就需要同步等待填充。但有些数据项,即便过期也会由于某些原因没有及时删除,过期数据项仍然会存在,因此需对该些数据项进行本文档来自技高网
...

【技术保护点】
一种分布式缓存的更新方法,其特征在于,包括:S1、建立一分布式缓存,所述分布式缓存内存储有若干数据项和每一数据项的过期时长,每一数据项分别与一更新键对应;S2、根据所述数据项的内容和所述过期时长判断所述分布式缓存内是否存在无效数据项,并在判断结果为是时进入步骤S3,S3、向存在无效数据项的所述分布式缓存的客户端节点串行插入所述无效数据项对应的更新键,并在其中一客户端节点的更新键插入成功时,从一数据源中获取所述无效数据项对应的最新数据项以更新所述分布式缓存中的所述无效数据项,并记录所述无效数据项的更新时刻。

【技术特征摘要】
1.一种分布式缓存的更新方法,其特征在于,包括:S1、建立一分布式缓存,所述分布式缓存内存储有若干数据项和每一数据项的过期时长,每一数据项分别与一更新键对应;S2、根据所述数据项的内容和所述过期时长判断所述分布式缓存内是否存在无效数据项,并在判断结果为是时进入步骤S3,S3、向存在无效数据项的所述分布式缓存的客户端节点串行插入所述无效数据项对应的更新键,并在其中一客户端节点的更新键插入成功时,从一数据源中获取所述无效数据项对应的最新数据项以更新所述分布式缓存中的所述无效数据项,并记录所述无效数据项的更新时刻。2.如权利要求1所述的更新方法,其特征在于,所述数据项的内容包括数据键和所述数据键的键值,步骤S2中根据所述数据项的内容和所述过期时长判断所述分布式缓存内是否存在无效数据项包括:S21、判断所述数据键的键值是否不存在,若是,所述数据项则为无效数据项;若否,执行步骤S22;S22、判断所述数据键的键值是否达到所述过期时长,若是,所述数据项则为无效数据项。3.如权利要求2所述的更新方法,其特征在于,步骤S21在判断结果为是时,步骤S3中以同步请求的方式执行所述无效数据项的更新;步骤S22在判断结果为是时,步骤S3中以异步请求的方式执行所述无效数据项的更新。4.如权利要求1所述的更新方法,其特征在于,所述更新键存储于一第二分布式缓存中,所述更新方法包括:S41、判断同一客户端节点的更新键插入失败的次数是否达到一次数阈值,若是,将所述更新键存储于一数据库中。5.如权利要求1所述的更新方法,其特征在于,步骤S2在外部设备向所述分布式缓存请求所述数据项时执行所述分布式缓存内是否存在无效数据项的判断,或者周期性地执行所述分布式缓存内是否存在无效数据项的判断。6.如权利要求1所述的更新方法,其特征在于,步骤S3之后还包括:S42、判断所述分布式缓存中的所述无效数据项的更新时长是否超过一时长阈值,若是,返回步骤S3。7.如权利要求1-6中任意一项所述的更新方法,其特征在于,步骤S3中当所述更新键插入失败时以同步请求的方式再次获取分布式缓存内的数据项,和/或,步骤S3中当所述无效数据项更新完成时,以同步请求的方式返回更新了的数据项。8.一种本地缓存的更新方法,其特征在于,其利用如权利要求1-7中任意一项所述的分布式缓存的更新方法中已更新的数据项更新本地缓存内...

【专利技术属性】
技术研发人员:陆昆朋
申请(专利权)人:上海携程商务有限公司
类型:发明
国别省市:上海;31

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

1