数据更新方法、装置、计算机设备及存储介质制造方法及图纸

技术编号:36733662 阅读:11 留言:0更新日期:2023-03-04 10:02
本申请提供一种数据更新方法、装置、计算机设备及存储介质,涉及云技术、大数据、云存储等技术领域。通过在至少两个访问请求触发数据更新时,先基于访问索引确定访问队列,实现将多个访问请求准确集中于队列中统一、便捷化的管理;由访问队列中头请求来更新索引数据,头请求对应的头线程唤醒除头请求外的其余访问请求对应的等待线程,使得其余访问请求无需重复执行更新便可直接访问更新后的索引数据;从而避免了大量访问请求的重复更新,尤其对于高并发场景,可以避免高并发的海量请求穿透后台设备,避免海量请求同时重复更新导致的更新错误、产生脏数据、操作系统崩溃等问题,保证了数据更新过程的准确性,提高了更新过程的可靠性。性。性。

【技术实现步骤摘要】
数据更新方法、装置、计算机设备及存储介质


[0001]本申请涉及云技术、大数据、云存储等
,本申请涉及一种数 据更新方法、装置、计算机设备及存储介质。

技术介绍

[0002]随着应用中各项业务的规模扩大,业务数据爆炸式增长,缓存因具备 较高访问速度而被广泛应用到各项业务中,合理使用缓存可以有效减轻对 数据库所在服务器的访问压力。然而,随着业务更新,缓存中数据时常也 需要更新。
[0003]相关技术中,数据更新的方法可以包括:当需要更新缓存中某项数据 时,先删除该项数据以使缓存失效,从数据库中获取最新数据,并将最新 数据更新至缓存中,更新后再恢复对缓存中数据的访问。
[0004]上述数据更新方法中需要先中断、再恢复缓存,此时若有大量并发访 问请求只能直接访问服务器的数据库来更新缓存中数据,使得服务器被大 量请求穿透而造成服务器系统雪崩,易更新失败,从而上述数据更新方法 的可靠性较差。

技术实现思路

[0005]本申请提供了一种数据更新的方法、装置、计算机设备及存储介质, 可以解决相关技术中数据更新方法的可靠性较差的问题。所述技术方案如 下:
[0006]一方面,提供了一种数据更新方法,所述方法包括:
[0007]响应于触发数据更新的至少两个访问请求,基于所述至少两个访问请 求对应的访问索引,确定访问队列,所述访问队列包括至少两个访问请求, 任一访问请求用于访问与其对应访问索引的索引数据;
[0008]基于所述访问队列中的头请求,对与所述访问队列中各个访问请求相 匹配的索引数据进行更新,所述头请求是指位于所述访问队列的头节点的 访问请求;
[0009]基于所述头请求对应的头线程,唤醒所述访问队列中除所述头请求之 外的至少一个访问请求对应的等待线程,所述等待线程用于等待执行对应 访问请求的访问操作;
[0010]基于所述访问队列中至少两个访问请求对应的线程,访问更新后的索 引数据。
[0011]在一个可能实现方式中,所述访问队列包括至少两个指定请求时,所 述通过所述头线程,执行对所述索引数据的指定访问操作,包括:
[0012]通过所述头线程,对所述至少两个指定请求进行冲突检测;
[0013]响应于所述至少两个指定请求之间不存在冲突时,通过所述头线程, 执行所述至少两个指定请求的至少两个指定访问操作;
[0014]响应于所述至少两个指定请求之间存在冲突时,通过所述头线程,执 行所述至少两个指定请求中符合冲突策略的请求的目标指定操作。
[0015]在一个可能实现方式中,所述触发数据更新的至少两个访问请求是 指:访问缓存数据库未命中的访问请求或者访问缓存数据库中过期数据的 访问请求。
[0016]在一个可能实现方式中,所述基于所述头请求对应的头线程,唤醒所 述访问队列中除所述头请求之外的至少一个访问请求对应的等待线程,包 括:
[0017]响应于与各个访问请求相匹配的索引数据更新成功时,通过所述头线 程,将所述访问队列中至少两个访问请求从所述访问队列中逐个移出,并 唤醒从所述访问队列移出的访问请求对应的等待线程。
[0018]另一方面,提供了一种数据更新的装置,该装置包括:
[0019]队列确定模块,用于响应于触发数据更新的至少两个访问请求,基于 所述至少两个访问请求对应的访问索引,确定包括访问队列,所述访问队 列包括至少两个访问请求,任一访问请求用于访问与其对应访问索引的索 引数据;
[0020]更新模块,用于基于所述访问队列中的头请求,对与所述访问队列中 各个访问请求相匹配的索引数据进行更新,所述头请求是指位于所述访问 队列的头节点的访问请求;
[0021]唤醒模块,用于基于所述头请求对应的头线程,唤醒所述访问队列中 除所述头请求之外的至少一个访问请求对应的等待线程,所述等待线程用 于等待执行对应访问请求的访问操作;
[0022]访问模块,用于基于所述访问队列中至少两个访问请求对应的线程, 访问更新后的索引数据。
[0023]另一方面,提供了一种计算机设备,所述计算机设备包括:
[0024]一个或多个处理器;
[0025]存储器;
[0026]一个或多个计算机程序,其中所述一个或多个应用程序被存储在所述 存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序 配置用于:执行上述的数据更新方法。
[0027]另一方面,提供了一种计算机可读存储介质,所述计算机存储介质用 于存储计算机指令,当所述计算机指令在计算机上运行时,使得计算机可 以执行上述的数据更新方法。
[0028]另一方面,提供了一种计算机程序产品,其特征在于,包括计算机程 序或指令,所述计算机程序或指令被处理器执行时实现上述的数据更新方 法。
[0029]本申请提供的技术方案带来的有益效果是:
[0030]通过在至少两个访问请求触发数据更新时,先基于访问索引确定访问 队列,实现将多个访问请求准确集中于队列中统一、便捷化的管理;由访 问队列中头请求来更新访问队列中各个访问请求相匹配的索引数据,头请 求对应的头线程唤醒除头请求外的其余访问请求对应的等待线程,使得其 余访问请求无需重复执行更新便可直接访问由头请求更新后的索引数据; 从而避免了大量访问请求的重复更新,尤其对于高并发场景,可以避免高 并发的海量请求穿透后台设备,避免海量请求同时重复更新导致的更新错 误、产生脏数据、操作系统崩溃等问题,保证了数据更新过程的准确性, 提高了更新过程的可靠性。
附图说明
[0031]为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施 例描述中所需要使用的附图作简单地介绍。
[0032]图1为本申请提供的一种数据更新方法的实施环境示意图;
[0033]图2为本申请实施例提供的一种数据更新方法的流程示意图;
[0034]图3为本申请实施例提供的一种确定第三访问队列的流程示意图;
[0035]图4为本申请实施例提供的一种数据更新流程的示意图;
[0036]图5为本申请实施例提供的一种数据更新装置的结构示意图;
[0037]图6为本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
[0038]下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其 中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似 功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本 申请,而不能解释为对本专利技术的限制。
[0039]本
技术人员可以理解,除非特意声明,这里使用的单数形式
ꢀ“
一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理 解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、 步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他 特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我 们本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据更新方法,其特征在于,所述方法包括:响应于触发数据更新的至少两个访问请求,基于所述至少两个访问请求对应的访问索引,确定访问队列,所述访问队列包括至少两个访问请求,任一访问请求用于访问与其对应访问索引的索引数据;基于所述访问队列中的头请求,对与所述访问队列中各个访问请求相匹配的索引数据进行更新,所述头请求是指位于所述访问队列的头节点的访问请求;基于所述头请求对应的头线程,唤醒所述访问队列中除所述头请求之外的至少一个访问请求对应的等待线程,所述等待线程用于等待执行对应访问请求的访问操作;基于所述访问队列中至少两个访问请求对应的线程,访问更新后的索引数据。2.根据权利要求1所述的数据更新方法,其特征在于,所述访问索引包括索引键或虚拟键;所述基于所述至少两个访问请求对应的访问索引,确定访问队列,包括以下任一项:基于所述索引键,确定所述索引键对应的访问队列,所述索引键对应的访问队列包括待访问所述索引键对应的索引数据的至少两个访问请求;基于所述索引键所属的数据桶,确定所述数据桶对应的访问队列,所述数据桶对应的访问队列包括待访问所述数据桶中任一索引键对应的索引数据的至少两个访问请求;基于所述虚拟键,确定所述虚拟键对应的访问队列,所述虚拟键对应的访问队列包括待访问所述虚拟键对应的索引数据的至少两个访问请求,所述虚拟键是指待访问的缓存数据库中不存在的索引键。3.根据权利要求1所述的数据更新方法,其特征在于,所述响应于触发数据更新的至少两个访问请求,基于所述至少两个访问请求对应的访问索引,确定访问队列,包括:响应于触发数据更新的至少两个访问请求,基于所述访问索引,创建所述访问索引所对应的初始队列;将所述至少两个访问请求逐个添加至所述初始队列的各个队列位置,得到所述访问队列。4.根据权利要求3所述的数据更新方法,其特征在于,所述响应于触发数据更新的至少两个访问请求,基于所述访问索引,创建所述访问索引所对应的初始队列,包括以下任一项:基于队列属性变量和队列操作的目标锁,创建所述访问索引对应的第一初始队列,所述目标锁用于锁定对所述第一初始队列执行队列操作的线程的唯一性,所述队列操作包括入队操作和出队操作中至少一项,所述队列属性变量包括队列长度变量和内存使用变量中的至少一项;基于预定队列长度、头节点、尾节点,创建所述访问索引对应的第二初始队列,所述第二初始队列的头节点和尾节点相连接;基于队列属性变量、尾节点的左指针,创建所述访问索引对应的第三初始队列。5.根据权利要求4所述的数据更新方法,其特征在于,所述将所述至少两个访问请求逐个添加至所述初始队列的各个队列位置,得到所述访问队列,包括:当所述初始队列为第一初始队列时,基于所述至少两个访问请求对应的线程对所述目标锁的至少两次调用结果,逐次将调用成功的线程对应的访问请求添加至所述第一初始队列,得到所述第一访问队列;
当所述初始队列为第二初始队列时,基于所述至少两个访问请求对应的线程对所述第二初始队列的当前尾节点的位置的操作结果,逐个将每个线程对应的访问请求添加至所述第二初始队列,得到第二访问队列;当所述初始队列为第三初始队列时,基于所述至少两个访问请求对应的线程对所述第三初始队列的当前尾节点的指针的操作结果,逐个将每个线程对应的访问请求添加至所述第三初始队列,得到第三访问队列。6.根据权利要求5所述的数据更新方法,其特征在于,所述基于所述至少两个访问请求对应的线程对所述目标锁的至少两次调用结果,逐次将调用成功的线程对应的访问请求添加至所述第一初始队列,得到所述第一访问队列,包括:通过未加入所述第一初始队列的至少一个访问请求对应的线程,执行对所述目标锁的调用操作;响应于任一线程调用成功时,基于所述目标锁锁定的入队操作,将调用成功的任一线程对应的访问请求添加至所述第一初始队列,重复执行对目标锁的调用操作和所述入队操作,直至所述至少两个访问请求中每个访问请求被添加至所述第一初始队列,得到所述第一访问队列。7.根据权利要求5所述的数据更新方法,其特征在于,所述基于所述至少两个访问请求对应的线程对所述第二初始队列的当前尾节点的位置的操作结果,逐个将每个线程对应的访问请求添加至所述第二初始队列,得到第二访问队列,包括:通过未加入所述第二初始队列的至少一个访问请求对应的线程,对所述当前尾节点的内存地址和预期地址之间的进行比较;响应于任一线程的比较结果符合第一目标条件时,交换所述内存地址和目标地址;基于所述比较并交换操作所确定的队列位置,将比较结果符合第一目标条件的任一线程对应...

【专利技术属性】
技术研发人员:周志伟陈云云曾楚伟李斌
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:

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

1