一种数据加载方法和装置制造方法及图纸

技术编号:29673110 阅读:16 留言:0更新日期:2021-08-13 21:54
本发明专利技术公开了一种数据加载方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:接收数据加载请求,确定数据加载请求中的键名的状态为普通状态;按照当前偏移量平移键名,将平移后的键名与当前偏移量进行拼接,生成键名对应的新键名,更新当前偏移量,之后判断缓存中是否存在新键名,如果缓存中存在新键名,且新键名对应的键值类型为标识码类型,则等待设定时间后,重复执行本步骤,直至缓存中不存在新键名;对缓存中的当前键名进行加锁,生成标识码作为当前键名对应的键值;从数据库中获取键名对应的数据,确定标识码有效,更新缓存中的当前键名和键值。该实施方式在避免重复加载的同时,防止其他请求被阻塞,提高数据加载效率。

【技术实现步骤摘要】
一种数据加载方法和装置
本专利技术涉及计算机
,尤其涉及一种数据加载方法和装置。
技术介绍
使用Redis缓存过程中,会涉及两类问题,一是缓存单例加载,二是避免热key(键名)问题。其中,热key问题是指同一时间由于大量的请求访问同一个key,造成Redis的单节点压力过大,进而导致缓存奔溃的问题。为了实现缓存单例加载,现有技术通常通过分布式锁方式实现。为了消除热key对Redis的影响,现有技术通常会在key后加随机值,使得一个key在不同节点有多个备份,以避免单节点压力;还可以增加本地缓存,在访问时优先访问本地缓存,从而减少对Redis的访问量,减轻节点压力。在实现本专利技术过程中,现有技术中至少存在如下问题:使用分布式锁的方式来控制缓存的单例加载,当获取到锁的请求由于某种原因意外中断,获取的锁需要等待一定的超时时间才能被释放,导致后面的请求全部被阻塞,对系统的查询效率造成影响;使用随机值消除热key问题,无法准确删除缓存数据;使用本地缓存消除热key问题,系统复杂性高。
技术实现思路
有鉴于此,本专利技术实施例提供一种数据加载方法和装置,通过按照偏移量将键名平移,生成新键名,在缓存中不存在新键名时,锁定缓存中的键名,并将键值设置为标识码,之后获取数据库中的数据,并将键值替换为获取的数据,实现缓存加载;在缓存中存在新键名时,使用更新后的偏移量重新生成新键名,并进行缓存加载,在避免重复加载的同时,防止其他请求被阻塞,提高数据加载效率。为实现上述目的,根据本专利技术实施例的一个方面,提供了一种数据加载方法。本专利技术实施例的一种数据加载方法,包括:接收数据加载请求,确定所述数据加载请求中的键名的状态为普通状态;按照当前偏移量平移所述键名,将平移后的所述键名与所述当前偏移量进行拼接,生成所述键名对应的新键名,更新所述当前偏移量,之后判断缓存中是否存在所述新键名,如果缓存中存在所述新键名,且所述新键名对应的键值类型为标识码类型,则等待设定时间后,重复执行本步骤,直至缓存中不存在所述新键名;对缓存中的当前键名进行加锁,生成标识码作为所述当前键名对应的键值;其中,所述当前键名的初始值为所述键名;从数据库中获取所述键名对应的数据,确定所述标识码有效,更新缓存中的所述当前键名为所述新键名,所述键值为所述数据。可选地,所述将平移后的所述键名与所述当前偏移量进行拼接,生成所述键名对应的新键名,包括:使用设定的连接符,将平移后的所述键名与所述当前偏移量进行拼接,得到初始拼接结果;使用所述连接符,将设定的键标识与所述初始拼接结果进行拼接,得到最终拼接结果,将所述最终拼接结果作为所述键名对应的新键名。可选地,所述更新所述当前偏移量,包括:将所述当前偏移量与设定的平移步长相加,得到相加结果;其中,所述当前偏移量的初始值为指定数值;将设定的最大平行副本数与所述平移步长相乘,得到相乘结果;其中,所述最大平行副本数是为所述键名生成的副本的最大数量;将所述相加结果和所述相乘结果进行取余运算,得到新的当前偏移量。可选地,所述对缓存中的当前键名进行加锁的步骤之后,所述方法还包括:确定加锁成功,启动定时任务;其中,所述定时任务用于定时更新所述当前键名的过期时间。可选地,所述按照当前偏移量平移所述键名的步骤之前,所述方法还包括:自增当前尝试次数,判断自增后的当前尝试次数是否大于或者等于设定的尝试次数阈值;如果所述自增后的当前尝试次数大于或者等于所述尝试次数阈值,则降级处理;所述按照当前偏移量平移所述键名,包括:如果所述自增后的当前尝试次数小于所述尝试次数阈值,则按照当前偏移量平移所述键名。可选地,所述等待设定时间的步骤之后,所述方法还包括:自增当前等待次数,判断所述新键名对应的键值类型是否为所述标识码类型;如果所述新键名对应的键值类型为所述标识码类型,则判断自增后的当前等待次数是否大于或者等于设定的最大等待次数,如果所述当前等待次数大于或者等于所述最大等待次数,则执行所述自增当前尝试次数的步骤;如果所述新键名对应的键值类型为数据库中数据的格式类型,则返回所述新键名对应的键值;所述等待设定时间,包括:如果所述当前等待次数小于所述最大等待次数,则等待设定时间。可选地,所述降级处理,包括:判断缓存中的所述键值与内存中的标识码是否相同,如果所述键值与所述标识码相同,则删除缓存中的所述当前键名和所述键值,返回提示信息;如果所述键值与所述标识码不同,则返回所述提示信息。可选地,所述方法还包括:监听所述键名的状态,确定所述键名的状态为热键状态;根据设定的平移步长和随机种子,计算所述当前偏移量的初始值。为实现上述目的,根据本专利技术实施例的另一方面,提供了一种数据加载装置。本专利技术实施例的一种数据加载装置,包括:状态确定模块,用于接收数据加载请求,确定所述数据加载请求中的键名的状态为普通状态;循环处理模块,用于按照当前偏移量平移所述键名,将平移后的所述键名与所述当前偏移量进行拼接,生成所述键名对应的新键名,更新所述当前偏移量;以及判断缓存中是否存在所述新键名,如果缓存中存在所述新键名,且所述新键名对应的键值类型为标识码类型,则等待设定时间后,重复执行所述循环处理模块所执行的步骤,直至缓存中不存在所述新键名;数据锁定模块,用于对缓存中的当前键名进行加锁,生成标识码作为所述当前键名对应的键值;其中,所述当前键名的初始值为所述键名;数据更新模块,用于从数据库中获取所述键名对应的数据,确定所述标识码有效,更新缓存中的所述当前键名为所述新键名,所述键值为所述数据。可选地,所述循环处理模块,还用于使用设定的连接符,将平移后的所述键名与所述当前偏移量进行拼接,得到初始拼接结果;使用所述连接符,将设定的键标识与所述初始拼接结果进行拼接,得到最终拼接结果,将所述最终拼接结果作为所述键名对应的新键名。可选地,所述循环处理模块,还用于将所述当前偏移量与设定的平移步长相加,得到相加结果;其中,所述当前偏移量的初始值为指定数值;将设定的最大平行副本数与所述平移步长相乘,得到相乘结果;其中,所述最大平行副本数是为所述键名生成的副本的最大数量;将所述相加结果和所述相乘结果进行取余运算,得到新的当前偏移量。可选地,所述装置还包括:定时更新模块,用于确定加锁成功,启动定时任务;其中,所述定时任务用于定时更新所述当前键名的过期时间。可选地,所述装置还包括:尝试处理模块,用于自增当前尝试次数,判断自增后的当前尝试次数是否大于或者等于设定的尝试次数阈值;如果所述自增后的当前尝试次数大于或者等于所述尝试次数阈值,则降级处理;所述循环处理模块,还用于如果所述自增后的当前尝试次数小于所述尝试次数阈值,则按照当前偏移量平移所述键名。可选地,所述装置还包括:等待重试模块,用于自增当前等待次数,判断所述新键名对应的键值类型是否为所述标识码类型;如果所述新键名对应的键值类型为所述标识码类型,则判断自增后的当前等待次数是否大于或者等于设定的最大等待次数,如果所述当前等待次数大于或者等于所述最大等待次数,则执行本文档来自技高网...

【技术保护点】
1.一种数据加载方法,其特征在于,包括:/n接收数据加载请求,确定所述数据加载请求中的键名的状态为普通状态;/n按照当前偏移量平移所述键名,将平移后的所述键名与所述当前偏移量进行拼接,生成所述键名对应的新键名,更新所述当前偏移量,之后判断缓存中是否存在所述新键名,如果缓存中存在所述新键名,且所述新键名对应的键值类型为标识码类型,则等待设定时间后,重复执行本步骤,直至缓存中不存在所述新键名;/n对缓存中的当前键名进行加锁,生成标识码作为所述当前键名对应的键值;其中,所述当前键名的初始值为所述键名;/n从数据库中获取所述键名对应的数据,确定所述标识码有效,更新缓存中的所述当前键名为所述新键名,所述键值为所述数据。/n

【技术特征摘要】
1.一种数据加载方法,其特征在于,包括:
接收数据加载请求,确定所述数据加载请求中的键名的状态为普通状态;
按照当前偏移量平移所述键名,将平移后的所述键名与所述当前偏移量进行拼接,生成所述键名对应的新键名,更新所述当前偏移量,之后判断缓存中是否存在所述新键名,如果缓存中存在所述新键名,且所述新键名对应的键值类型为标识码类型,则等待设定时间后,重复执行本步骤,直至缓存中不存在所述新键名;
对缓存中的当前键名进行加锁,生成标识码作为所述当前键名对应的键值;其中,所述当前键名的初始值为所述键名;
从数据库中获取所述键名对应的数据,确定所述标识码有效,更新缓存中的所述当前键名为所述新键名,所述键值为所述数据。


2.根据权利要求1所述的方法,其特征在于,所述将平移后的所述键名与所述当前偏移量进行拼接,生成所述键名对应的新键名,包括:
使用设定的连接符,将平移后的所述键名与所述当前偏移量进行拼接,得到初始拼接结果;
使用所述连接符,将设定的键标识与所述初始拼接结果进行拼接,得到最终拼接结果,将所述最终拼接结果作为所述键名对应的新键名。


3.根据权利要求1所述的方法,其特征在于,所述更新所述当前偏移量,包括:
将所述当前偏移量与设定的平移步长相加,得到相加结果;其中,所述当前偏移量的初始值为指定数值;
将设定的最大平行副本数与所述平移步长相乘,得到相乘结果;其中,所述最大平行副本数是为所述键名生成的副本的最大数量;
将所述相加结果和所述相乘结果进行取余运算,得到新的当前偏移量。


4.根据权利要求1所述的方法,其特征在于,所述对缓存中的当前键名进行加锁的步骤之后,所述方法还包括:
确定加锁成功,启动定时任务;其中,所述定时任务用于定时更新所述当前键名的过期时间。


5.根据权利要求1所述的方法,其特征在于,所述按照当前偏移量平移所述键名的步骤之前,所述方法还包括:
自增当前尝试次数,判断自增后的当前尝试次数是否大于或者等于设定的尝试次数阈值;
如果所述自增后的当前尝试次数大于或者等于所述尝试次数阈值,则降级处理;
所述按照当前偏移量平移所述键名,包括:如果所述自增后的当前尝试次数小于所述尝试次数阈值,则按照当前偏移量平移所述键名。


6.根据权利要求5所述的方法,其特征在于,所述等待设定时间的步骤之后,...

【专利技术属性】
技术研发人员:糜鹏程
申请(专利权)人:北京沃东天骏信息技术有限公司北京京东世纪贸易有限公司
类型:发明
国别省市:北京;11

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

1