【技术实现步骤摘要】
数据更新方法、装置、计算机设备及存储介质
[0001]本申请涉及云技术、大数据、云存储等
,本申请涉及一种数 据更新方法、装置、计算机设备及存储介质。
技术介绍
[0002]随着应用中各项业务的规模扩大,业务数据爆炸式增长,缓存因具备 较高访问速度而被广泛应用到各项业务中,合理使用缓存可以有效减轻对 数据库所在服务器的访问压力。然而,随着业务更新,缓存中数据时常也 需要更新。
[0003]相关技术中,数据更新的方法可以包括:当需要更新缓存中某项数据 时,先删除该项数据以使缓存失效,从数据库中获取最新数据,并将最新 数据更新至缓存中,更新后再恢复对缓存中数据的访问。
[0004]上述数据更新方法中需要先中断、再恢复缓存,此时若有大量并发访 问请求只能直接访问服务器的数据库来更新缓存中数据,使得服务器被大 量请求穿透而造成服务器系统雪崩,易更新失败,从而上述数据更新方法 的可靠性较差。
技术实现思路
[0005]本申请提供了一种数据更新的方法、装置、计算机设备及存储介质, 可以解决相关技术中数据更新方法的可靠性较差的问题。所述技术方案如 下:
[0006]一方面,提供了一种数据更新方法,所述方法包括:
[0007]响应于触发数据更新的至少两个访问请求,基于所述至少两个访问请 求对应的访问索引,确定访问队列,所述访问队列包括至少两个访问请求, 任一访问请求用于访问与其对应访问索引的索引数据;
[0008]基于所述访问队列中的头请求,对与所述访问队列中各个访问请求 ...
【技术保护点】
【技术特征摘要】
1.一种数据更新方法,其特征在于,所述方法包括:响应于触发数据更新的至少两个访问请求,基于所述至少两个访问请求对应的访问索引,确定访问队列,所述访问队列包括至少两个访问请求,任一访问请求用于访问与其对应访问索引的索引数据;基于所述访问队列中的头请求,对与所述访问队列中各个访问请求相匹配的索引数据进行更新,所述头请求是指位于所述访问队列的头节点的访问请求;基于所述头请求对应的头线程,唤醒所述访问队列中除所述头请求之外的至少一个访问请求对应的等待线程,所述等待线程用于等待执行对应访问请求的访问操作;基于所述访问队列中至少两个访问请求对应的线程,访问更新后的索引数据。2.根据权利要求1所述的数据更新方法,其特征在于,所述访问索引包括索引键或虚拟键;所述基于所述至少两个访问请求对应的访问索引,确定访问队列,包括以下任一项:基于所述索引键,确定所述索引键对应的访问队列,所述索引键对应的访问队列包括待访问所述索引键对应的索引数据的至少两个访问请求;基于所述索引键所属的数据桶,确定所述数据桶对应的访问队列,所述数据桶对应的访问队列包括待访问所述数据桶中任一索引键对应的索引数据的至少两个访问请求;基于所述虚拟键,确定所述虚拟键对应的访问队列,所述虚拟键对应的访问队列包括待访问所述虚拟键对应的索引数据的至少两个访问请求,所述虚拟键是指待访问的缓存数据库中不存在的索引键。3.根据权利要求1所述的数据更新方法,其特征在于,所述响应于触发数据更新的至少两个访问请求,基于所述至少两个访问请求对应的访问索引,确定访问队列,包括:响应于触发数据更新的至少两个访问请求,基于所述访问索引,创建所述访问索引所对应的初始队列;将所述至少两个访问请求逐个添加至所述初始队列的各个队列位置,得到所述访问队列。4.根据权利要求3所述的数据更新方法,其特征在于,所述响应于触发数据更新的至少两个访问请求,基于所述访问索引,创建所述访问索引所对应的初始队列,包括以下任一项:基于队列属性变量和队列操作的目标锁,创建所述访问索引对应的第一初始队列,所述目标锁用于锁定对所述第一初始队列执行队列操作的线程的唯一性,所述队列操作包括入队操作和出队操作中至少一项,所述队列属性变量包括队列长度变量和内存使用变量中的至少一项;基于预定队列长度、头节点、尾节点,创建所述访问索引对应的第二初始队列,所述第二初始队列的头节点和尾节点相连接;基于队列属性变量、尾节点的左指针,创建所述访问索引对应的第三初始队列。5.根据权利要求4所述的数据更新方法,其特征在于,所述将所述至少两个访问请求逐个添加至所述初始队列的各个队列位置,得到所述访问队列,包括:当所述初始队列为第一初始队列时,基于所述至少两个访问请求对应的线程对所述目标锁的至少两次调用结果,逐次将调用成功的线程对应的访问请求添加至所述第一初始队列,得到所述第一访问队列;
当所述初始队列为第二初始队列时,基于所述至少两个访问请求对应的线程对所述第二初始队列的当前尾节点的位置的操作结果,逐个将每个线程对应的访问请求添加至所述第二初始队列,得到第二访问队列;当所述初始队列为第三初始队列时,基于所述至少两个访问请求对应的线程对所述第三初始队列的当前尾节点的指针的操作结果,逐个将每个线程对应的访问请求添加至所述第三初始队列,得到第三访问队列。6.根据权利要求5所述的数据更新方法,其特征在于,所述基于所述至少两个访问请求对应的线程对所述目标锁的至少两次调用结果,逐次将调用成功的线程对应的访问请求添加至所述第一初始队列,得到所述第一访问队列,包括:通过未加入所述第一初始队列的至少一个访问请求对应的线程,执行对所述目标锁的调用操作;响应于任一线程调用成功时,基于所述目标锁锁定的入队操作,将调用成功的任一线程对应的访问请求添加至所述第一初始队列,重复执行对目标锁的调用操作和所述入队操作,直至所述至少两个访问请求中每个访问请求被添加至所述第一初始队列,得到所述第一访问队列。7.根据权利要求5所述的数据更新方法,其特征在于,所述基于所述至少两个访问请求对应的线程对所述第二初始队列的当前尾节点的位置的操作结果,逐个将每个线程对应的访问请求添加至所述第二初始队列,得到第二访问队列,包括:通过未加入所述第二初始队列的至少一个访问请求对应的线程,对所述当前尾节点的内存地址和预期地址之间的进行比较;响应于任一线程的比较结果符合第一目标条件时,交换所述内存地址和目标地址;基于所述比较并交换操作所确定的队列位置,将比较结果符合第一目标条件的任一线程对应...
【专利技术属性】
技术研发人员:周志伟,陈云云,曾楚伟,李斌,
申请(专利权)人:腾讯科技深圳有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。