针对redis数据缓存的数据更新方法、装置及电子设备与流程

未命名 07-26 阅读:104 评论:0


1.本技术涉及金融科技领域,具体而言,涉及一种针对redis数据缓存的数据更新方法、装置及电子设备。


背景技术:

2.现有技术中,分布式缓存异地多活模式架构是通过数据同步组件实现三园区副本间数据同步,达到系统的跨园区、跨异地高可用能力以及数据最终一致性。其中,针对各园区对应的存储节点中的数据一致性的验证,通常是通过对比三园区对应的存储节点中key的个数以及存储节点的数据内存使用量是否一致的方式来实现的。然而,上述验证方式存在以下缺点:
3.1.通过对比各园区对应的存储节点中的key个数、内存使用量是否相等的方式来实现数据一致性的验证,由于其方法较为宏观,对于一些数据不一致的特殊场景无法准确的验证,导致数据一致性验证的准确率较低。
4.2.各园区对应的存储节点之间的数据不一致时无法自动更新数据,导致数据更新效率较低。
5.针对上述的问题,目前尚未提出有效的解决方案。


技术实现要素:

6.本技术提供了一种针对redis数据缓存的数据更新方法、装置及电子设备,以至少解决相关技术在分布式存储系统中的多个存储节点之间的数据不一致时,无法自动更新数据导致数据更新效率低的技术问题。
7.根据本技术的一个方面,提供了一种针对redis数据缓存的数据更新方法,包括:从目标哈希表中获取待校验的m个目标键值对数据以及每个目标键值对数据所对应的目标时间戳信息,其中,每个目标键值对数据为分布式存储系统中的一个存储节点对应的一个键值对数据,每个目标时间戳信息用于表征与该目标时间戳信息相对应的目标键值对数据的数据更新时刻,m个目标键值对数据的主键相同,m为正整数;检测m个目标键值对数据所对应的键值是否相同;在m个目标键值对数据中的任意两个目标键值对数据所对应的键值不相同的情况下,确定分布式存储系统中的m个存储节点之间的数据不一致,并基于每个目标时间戳信息检测m个目标键值对数据所对应的数据更新时刻是否相同;在m个目标键值对数据中的任意两个目标键值对数据所对应的数据更新时刻不相同的情况下,基于每个目标时间戳信息确定第一键值对数据,并基于第一键值对数据更新分布式存储系统中的存储节点对应的键值对数据,其中,第一键值对数据为m个目标键值对数据中数据更新时刻最晚的目标键值对数据。
8.进一步地,在从目标哈希表中获取待校验的m个目标键值对数据以及每个目标键值对数据所对应的目标时间戳信息之前,针对redis数据缓存的数据更新方法还包括:获取分布式存储系统中的每个存储节点对应的目标元数据,得到m个目标元数据;依据m个目标
元数据获取每个存储节点对应的多个键值对数据以及每个键值对数据所对应的时间戳信息;将每个存储节点对应的多个键值对数据以及每个键值对数据所对应的时间戳信息存储至预设哈希表中,得到目标哈希表。
9.进一步地,在检测m个目标键值对数据所对应的键值是否相同之后,针对redis数据缓存的数据更新方法还包括:在m个目标键值对数据所对应的键值相同时,确定分布式存储系统中的m个存储节点之间的数据一致,并将m个目标键值对数据从目标哈希表中删除。
10.进一步地,在基于每个目标时间戳信息检测m个目标键值对数据所对应的数据更新时刻是否相同之后,针对redis数据缓存的数据更新方法还包括:在m个目标键值对数据所对应的数据更新时刻相同的情况下,将m个目标键值对数据划分为n个数据集合,其中,每个数据集合中的目标键值对数据所对应的键值相同,m大于或等于n,n为正整数;在m大于n时,将n个数据集合中目标键值对数据的数量最多的数据集合作为目标数据集合;确定目标数据集合中的目标键值对数据为第二键值对数据;基于第二键值对数据更新分布式存储系统中的存储节点对应的键值对数据。
11.进一步地,在将m个目标键值对数据划分为n个数据集合之后,针对redis数据缓存的数据更新方法还包括:在m等于n时,获取每个目标键值对数据所对应的节点序号;基于每个节点序号从m个目标键值对数据中获取第三键值对数据,其中,第三键值对数据为m个目标键值对数据中节点序号最大的目标键值对数据;基于第三键值对数据更新分布式存储系统中的存储节点对应的键值对数据。
12.进一步地,基于每个节点序号从m个目标键值对数据中获取第三键值对数据,包括:基于每个节点序号对m个目标键值对数据进行排序,得到排序结果;基于排序结果从m个目标键值对数据中获取第三键值对数据。
13.进一步地,基于第一键值对数据更新分布式存储系统中的存储节点对应的键值对数据,包括:响应于数据更新指令,其中,数据更新指令中携带有待更新的存储节点对应的唯一标识信息;基于唯一标识信息将第一键值对数据发送至待更新的存储节点;依据第一键值对数据更新待更新的存储节点所对应的键值对数据。
14.根据本技术的另一方面,还提供了一种针对redis数据缓存的数据更新装置,包括:获取模块,用于从目标哈希表中获取待校验的m个目标键值对数据以及每个目标键值对数据所对应的目标时间戳信息,其中,每个目标键值对数据为分布式存储系统中的一个存储节点对应的一个键值对数据,每个目标时间戳信息用于表征与该目标时间戳信息相对应的目标键值对数据的数据更新时刻,m个目标键值对数据的主键相同,m为正整数;检测模块,用于检测m个目标键值对数据所对应的键值是否相同;确定模块,用于在m个目标键值对数据中的任意两个目标键值对数据所对应的键值不相同的情况下,确定分布式存储系统中的m个存储节点之间的数据不一致,并基于每个目标时间戳信息检测m个目标键值对数据所对应的数据更新时刻是否相同;更新模块,用于在m个目标键值对数据中的任意两个目标键值对数据所对应的数据更新时刻不相同的情况下,基于每个目标时间戳信息确定第一键值对数据,并基于第一键值对数据更新分布式存储系统中的存储节点对应的键值对数据,其中,第一键值对数据为m个目标键值对数据中数据更新时刻最晚的目标键值对数据。
15.根据本技术的另一方面,还提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,其中,计算机程序被设置为运行时执行上述的针对redis数据缓存
的数据更新方法。
16.根据本技术的另一方面,还提供了一种电子设备,电子设备包括一个或多个处理器;存储器,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现用于运行程序,其中,程序被设置为运行时执行上述的针对redis数据缓存的数据更新方法。
17.在本技术中,首先从目标哈希表中获取待校验的m个目标键值对数据以及每个目标键值对数据所对应的目标时间戳信息,其中,每个目标键值对数据为分布式存储系统中的一个存储节点对应的一个键值对数据,每个目标时间戳信息用于表征与该目标时间戳信息相对应的目标键值对数据的数据更新时刻,m个目标键值对数据的主键相同,m为正整数;然后检测m个目标键值对数据所对应的键值是否相同;然后在m个目标键值对数据中的任意两个目标键值对数据所对应的键值不相同的情况下,确定分布式存储系统中的m个存储节点之间的数据不一致,并基于每个目标时间戳信息检测m个目标键值对数据所对应的数据更新时刻是否相同;最后在m个目标键值对数据中的任意两个目标键值对数据所对应的数据更新时刻不相同的情况下,基于每个目标时间戳信息确定第一键值对数据,并基于第一键值对数据更新分布式存储系统中的存储节点对应的键值对数据,其中,第一键值对数据为m个目标键值对数据中数据更新时刻最晚的目标键值对数据。
18.在上述过程中,通过检测m个目标键值对数据所对应的键值是否相同,来确定分布式存储系统中的m个存储节点之间的数据是否一致,能够适应于所有数据一致性验证的场景,提高了数据一致性验证的准确率,从而有效避免了由于数据不一致导致的业务逻辑错误的问题;在确定分布式存储系统中的m个存储节点之间的数据不一致时,通过基于目标时间戳信息确定第一键值对数据,能够基于第一键值对数据自动更新分布式存储系统中的存储节点对应的键值对数据,从而实现了提高数据更新效率的技术效果,进而解决了相关技术在分布式存储系统中的多个存储节点之间的数据不一致时,无法自动更新数据导致数据更新效率低的技术问题。
附图说明
19.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
20.图1是根据本技术实施例的一种可选的针对redis数据缓存的数据更新方法的流程图;
21.图2是根据本技术实施例的一种可选的针对redis数据缓存的数据更新过程的流程图;
22.图3是根据本技术实施例的一种可选的目标哈希表的生成过程的示意图;
23.图4是根据本技术实施例的一种可选的针对redis数据缓存的数据更新装置的示意图;
24.图5是根据本技术实施例的一种可选的电子设备的示意图。
具体实施方式
25.为了使本技术领域的人员更好地理解本技术方案,下面将结合本技术实施例中的
附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分的实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本技术保护的范围。
26.需要说明的是,本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
27.需要说明的是,本技术的针对redis数据缓存的数据更新方法、装置及电子设备可用于金融科技领域,也可用于除金融科技领域之外的其他领域,本技术的针对redis数据缓存的数据更新方法、装置及电子设备的应用领域不做限定。
28.需要说明的是,本技术所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
29.实施例1
30.根据本技术实施例,提供了一种针对redis数据缓存的数据更新方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
31.图1是根据本技术实施例的一种可选地针对redis数据缓存的数据更新方法的流程图,如图1所示,该方法包括如下步骤:
32.为了方便理解本技术的技术方案,以下为对本技术中的一些关键术语的具体定义:
33.redis数据缓存:是一个key-value存储系统,其存储的数据类型有string(字符串)类型、list(链表)类型、set(集合)类型、zset(有序集合)类型和hash(哈希)类型,每种数据类型均有不同的数据操作方式。
34.unixtime:自1970年1月1日零点到当前时刻所经历的毫秒数。
35.步骤s101,从目标哈希表中获取待校验的m个目标键值对数据以及每个目标键值对数据所对应的目标时间戳信息。
36.在一种可选的实施例中,一种针对redis数据缓存的数据更新系统可作为本技术实施例中的针对redis数据缓存的数据更新方法的执行主体。为了方便描述,以下将针对redis数据缓存的数据更新系统简称为系统。
37.在步骤s101中,每个目标键值对数据为分布式存储系统中的一个存储节点对应的一个键值对数据,每个目标时间戳信息用于表征与该目标时间戳信息相对应的目标键值对
数据的数据更新时刻,m个目标键值对数据的主键相同,m为正整数。其中,目标时间戳信息由unixtime和存储节点的节点id组成。
38.例如,在分布式存储系统的存储节点数量m为3时,如图2所示,系统可通过目标哈希表获取分布式存储系统的每个存储节点对应的一个目标键值对数据以及每个目标键值对数据所对应的目标时间戳信息,共获取3个目标键值对数据,其中,3个目标键值对数据可分别为[key(即键值对所对应的主键)=1,value(即键值对所对应的键值)=2]、[key=1,value=3]、[key=1,value=3];3个目标键值对数据还可分别为[key=1,value=3]、[key=1,value=3]、[key=1,value=3]。
[0039]
在本实施例中,为了实现在分布式存储系统中的多个存储节点之间的数据不一致时自动更新数据的目的,本技术对redis数据缓存进行了二次开发改造,具体的,本技术对redis内核源码的底层数据结构-redisobject进行了改造,增加了混合时钟元数据,用于确定key的更新时间。具体代码示例如下:
[0040]
typedef struct redisobject{
[0041]
unsigned type:4;
[0042]
unsigned encoding:4;
[0043]
unsigned lru:lru_bits;/*lru time(relative to global lru_clock)or
[0044]
*lfu data(least significant 8bits frequency
[0045]
*and most significant 16bits access time).*/
[0046]
int refcount;
[0047]
void*ptr;
[0048]
//新增混合时钟属性
[0049]
hlc timestamp;
[0050]
}robj;
[0051]
typedef struct hybirdlogicclock{
[0052]
unsigned long unixtime;
[0053]
char*nodeid;
[0054]
}hlc;
[0055]
步骤s102,检测m个键值对数据所对应的键值是否相同。
[0056]
为了提高数据一致性验证的准确率,避免由于数据不一致导致的业务逻辑错误的问题,在本实施例中,如图2所示,系统可通过检测m个目标键值对数据所对应的键值是否相同,来确定分布式存储系统中的m个存储节点之间的数据是否一致。
[0057]
步骤s103,在m个目标键值对数据中的任意两个目标键值对数据所对应的键值不相同的情况下,确定分布式存储系统中的m个存储节点之间的数据不一致,并基于每个目标时间戳信息检测m个目标键值对数据所对应的数据更新时刻是否相同。
[0058]
在本实施例中,如图2所示,系统可在检测到m个目标键值对数据中的任意两个目标键值对数据所对应的键值不相同的情况下,确定分布式存储系统中的m个存储节点之间的数据不一致。例如,在3个目标键值对数据分别为[key=1,value=2]、[key=1,value=3]、[key=1,value=3]时,或在3个目标键值对数据分别为[key=1,value=2]、[key=1,value=3]、[key=1,value=4]时,系统确定分布式存储系统中的3个存储节点之间的数据
不一致。
[0059]
可选地,如图2所示,为了实现在分布式存储系统中的m个存储节点之间的数据不一致时自动更新数据,系统可基于每个目标时间戳信息检测m个目标键值对数据所对应的数据更新时刻是否相同,来确定更新所述分布式存储系统中的存储节点的数据。
[0060]
步骤s104,在m个目标键值对数据中的任意两个目标键值对数据所对应的数据更新时刻不相同的情况下,基于每个目标时间戳信息确定第一键值对数据,并基于第一键值对数据更新分布式存储系统中的存储节点对应的键值对数据。
[0061]
在步骤s104中,第一键值对数据为m个目标键值对数据中数据更新时刻最晚的目标键值对数据。
[0062]
在本实施例中,如图2所示,系统在m个目标键值对数据中的任意两个目标键值对数据所对应的数据更新时刻不相同的情况下,基于每个目标时间戳信息确定第一键值对数据,其中,系统可选取最晚的数据更新时刻对应的目标时间戳信息为第一键值对数据,例如,在3个目标键值对数据以及目标键值对数据对应的数据更新时刻分别为[key=1,value=2],1649595836000(对应2022年4月10日21:03:56)、[key=1,value=3],1649595838000(对应2022年4月10日21:03:58)、[key=1,value=4],1649595839000(对应2022年4月10日21:03:59)时,系统可选取[key=1,value=4]作为第一键值对数据。然后系统可将第一键值对数据发送至待更新的存储节点,并基于第一键值对数据更新待更新的存储节点对应的键值对数据,从而实现了在分布式存储系统中的多个存储节点之间的数据不一致时自动更新数据,进而提高了数据更新效率。
[0063]
基于上述步骤s101至步骤s104所限定的方案,可以获知,在本技术实施例中,首先从目标哈希表中获取待校验的m个目标键值对数据以及每个目标键值对数据所对应的目标时间戳信息,其中,每个目标键值对数据为分布式存储系统中的一个存储节点对应的一个键值对数据,每个目标时间戳信息用于表征与该目标时间戳信息相对应的目标键值对数据的数据更新时刻,m个目标键值对数据的主键相同,m为正整数;然后检测m个目标键值对数据所对应的键值是否相同;然后在m个目标键值对数据中的任意两个目标键值对数据所对应的键值不相同的情况下,确定分布式存储系统中的m个存储节点之间的数据不一致,并基于每个目标时间戳信息检测m个目标键值对数据所对应的数据更新时刻是否相同;最后在m个目标键值对数据中的任意两个目标键值对数据所对应的数据更新时刻不相同的情况下,基于每个目标时间戳信息确定第一键值对数据,并基于第一键值对数据更新分布式存储系统中的存储节点对应的键值对数据,其中,第一键值对数据为m个目标键值对数据中数据更新时刻最晚的目标键值对数据。
[0064]
需要说明的是,在上述过程中,通过检测m个目标键值对数据所对应的键值是否相同,来确定分布式存储系统中的m个存储节点之间的数据是否一致,能够适应于所有数据一致性验证的场景,提高了数据一致性验证的准确率,从而有效避免了由于数据不一致导致的业务逻辑错误的问题;在确定分布式存储系统中的m个存储节点之间的数据不一致时,通过基于目标时间戳信息确定第一键值对数据,能够基于第一键值对数据自动更新分布式存储系统中的存储节点对应的键值对数据,从而实现了提高数据更新效率的技术效果,进而解决了相关技术在分布式存储系统中的多个存储节点之间的数据不一致时无法自动更新数据导致数据更新效率低的技术问题。
[0065]
可选地,在本技术实施例提供的针对redis数据缓存的数据更新方法中,在从目标哈希表中获取待校验的m个目标键值对数据以及每个目标键值对数据所对应的目标时间戳信息之前,系统可获取分布式存储系统中的每个存储节点对应的目标元数据,得到m个目标元数据;然后依据m个目标元数据获取每个存储节点对应的多个键值对数据以及每个键值对数据所对应的时间戳信息;最后系统将每个存储节点对应的多个键值对数据以及每个键值对数据所对应的时间戳信息存储至预设哈希表中,得到目标哈希表。
[0066]
在本实施例中,如图2所示,系统可获取分布式存储系统中的每个存储节点对应的目标元数据,然后通过启动图3中所示的与分布式存储系统中的存储节点数量相同的m个线程任务,通过一个线程任务遍历一个目标元数据,得到每个存储节点对应的多个键值对数据以及每个键值对数据所对应的时间戳信息,然后将每个存储节点对应的多个键值对数据以及每个键值对数据所对应的时间戳信息存储至预设哈希表中,得到目标哈希表。可选的,目标哈希表中相同的key所对应的value为数组,数组中的元素个数为存储节点数,元素为存储节点中的key对应的value。例如,如图3所示,分布式存储系统中有6个存储节点,系统通过一个线程任务遍历一个节点对应的目标元数据,得到key1对应的value数组,包括存储节点1对应的value1,timestamp1、存储节点2对应的value2,timestamp(即时间戳信息)2、存储节点3对应的value2,timestamp2、存储节点4对应的value2,timestamp2、存储节点5对应的value2,timestamp2、存储节点6对应的value1,timestamp1;以及得到key2对应的value数组等。
[0067]
需要说明的是,系统通过依据m个目标元数据获取每个存储节点对应的多个键值对数据以及每个键值对数据所对应的时间戳信息,并将多个键值对数据以及每个键值对数据所对应的时间戳信息存储至预设哈希表中,得到目标哈希表中,为后续通过目标哈希表获取目标键值对数据以及目标时间戳信息做数据准备。
[0068]
可选地,在本技术实施例提供的针对redis数据缓存的数据更新方法中,在检测m个键值对数据所对应的键值是否相同之后,系统在m个目标键值对数据所对应的键值相同时,可确定分布式存储系统中的m个存储节点之间的数据一致,并将m个目标键值对数据从目标哈希表中删除。
[0069]
例如,如图2所示,在3个目标键值对数据分别为[key=1,value=3]、[key=1,value=3]、[key=1,value=3]时,系统确定分布式存储系统中的3个存储节点之间的数据一致,然后将上述3个目标键值对数据从目标哈希表中删除。
[0070]
需要说明的是,通过在确定分布式存储系统中的m个存储节点之间的数据一致时,将m个目标键值对数据从目标哈希表中删除,能够避免对数据一致的存储节点进行数据更新导致资源浪费的问题。
[0071]
在一种可选的实施例中,在基于每个目标时间戳信息检测m个目标键值对数据所对应的数据更新时刻是否相同之后,系统在m个目标键值对数据所对应的数据更新时刻相同的情况下,可将m个目标键值对数据划分为n个数据集合,其中,每个数据集合中的目标键值对数据所对应的键值相同,m大于或等于n,n为正整数;系统可在m大于n时,将n个数据集合中目标键值对数据的数量最多的数据集合作为目标数据集合;然后系统可确定目标数据集合中的目标键值对数据为第二键值对数据;最后系统基于第二键值对数据更新分布式存储系统中的存储节点对应的键值对数据。
[0072]
例如,如图2所示,在3个目标键值对数据可分别为[key=1,value=2],1649595838000、[key=1,value=3],1649595838000、[key=1,value=3],1649595838000时,系统确定目标键值对数据所对应的数据更新时刻相同,并确定m大于n。然后系统将3个目标键值对数据划分为两个数据集合:数据集合1{[key=1,value=2]}以及数据集合2{[key=1,value=3],[key=1,value=3]},然后系统可确定数据集合1中的目标键值对数据的数量小于数据集合2中的目标键值对数据的数量,因此,系统可将数据集合2作为目标数据集合,将数据集合2中的key=1,value=3作为第二键值对数据,并基于第二键值对数据更新分布式存储系统中的存储节点对应的键值对数据。
[0073]
需要说明的是,为了避免在m个目标键值对数据所对应的数据更新时刻相同的情况下,由于无法确定更新存储节点的数据,导致无法自动更新分布式存储系统中的存储节点对应的键值对数据的问题,系统通过将m个目标键值对数据划分为n个数据集合,在m大于n时,将n个数据集合中目标键值对数据的数量最多的数据集合中的目标键值对数据作为第二键值对数据,更新分布式存储系统中的存储节点对应的键值对数据,实现了提高数据更新效率的技术效果,进而解决了相关技术在分布式存储系统中的多个存储节点之间的数据不一致时无法自动更新数据导致数据更新效率低的技术问题。
[0074]
在另一种可选的实施例中,在将m个目标键值对数据划分为n个数据集合之后,系统可在m等于n时,获取每个目标键值对数据所对应的节点序号;然后基于每个节点序号从m个目标键值对数据中获取第三键值对数据,其中,第三键值对数据为m个目标键值对数据中节点序号最大的目标键值对数据;最后系统可基于第三键值对数据更新分布式存储系统中的存储节点对应的键值对数据。
[0075]
可选地,基于每个节点序号从m个目标键值对数据中获取第三键值对数据,包括:系统可基于每个节点序号对m个目标键值对数据进行排序,得到排序结果;然后基于排序结果从m个目标键值对数据中获取第三键值对数据。
[0076]
例如,如图2所示,在3个目标键值对数据分别为[key=1,value=2],1649595838000、[key=1,value=3],1649595838000、[key=1,value=4],1649595838000时,系统确定目标键值对数据所对应的数据更新时刻相同,并确定m等于n,然后将3个目标键值对数据划分为三个数据集合:数据集合1{[key=1,value=2]}、数据集合2{[key=1,value=3]}以及数据集合23{[key=1,value=4]}。然后系统通过获取每个目标键值对数据所对应的节点序号,包括[key=1,value=2]对应的节点序号001、[key=1,value=3]对应的节点序号005以及[key=1,value=4]对应的节点序号009。然后系统通过对节点序号进行从大到小的排序,选取排名第一的[key=1,value=4]作为第三键值对数据,基于[key=1,value=4]对数据更新分布式存储系统中的存储节点对应的键值对数据。
[0077]
需要说明的是,为了避免在m个目标键值对数据所对应的数据更新时刻相同,且m个目标键值对数据均不相同的情况下,由于无法确定更新存储节点的数据,导致无法自动更新分布式存储系统中的存储节点对应的键值对数据的问题,系统通过每个目标键值对数据所对应的节点序号确定第三键值对数据,并基于第三键值对数据更新分布式存储系统中的存储节点对应的键值对数据,实现了提高数据更新效率的技术效果,进而解决了相关技术在分布式存储系统中的多个存储节点之间的数据不一致时无法自动更新数据导致数据更新效率低的技术问题。
[0078]
可选地,在本技术实施例提供的针对redis数据缓存的数据更新方法中,基于第一键值对数据更新分布式存储系统中的存储节点对应的键值对数据,包括:系统响应于数据更新指令,其中,数据更新指令中携带有待更新的存储节点对应的唯一标识信息;然后系统可基于唯一标识信息将第一键值对数据发送至待更新的存储节点;最后系统可依据第一键值对数据更新待更新的存储节点所对应的键值对数据。
[0079]
在本实施例中,存储节点对应的唯一标识信息可以为存储节点的节点id。例如,系统通过响应于数据更新指令,基于数据更新指令中携带的待更新的存储节点1的节点id,将第一键值对数据发送至存储节点1,然后系统基于第一键值对数据更新存储节点1所对应的键值对数据。
[0080]
需要说明的是,通过相应于数据更新指令,实现了自动将第一键值对数据发送至待更新的存储节点,并依据第一键值对数据更新待更新的存储节点所对应的键值对数据,从而实现了自动更新分布式存储系统中的存储节点对应的键值对数据,进而实现了提高数据更新效率的技术效果。
[0081]
由此可见,通过本技术的技术方案,能够通过检测m个目标键值对数据所对应的键值是否相同,来确定分布式存储系统中的m个存储节点之间的数据是否一致,能够适应于所有数据一致性验证的场景,提高了数据一致性验证的准确率,从而有效避免了由于数据不一致导致的业务逻辑错误的问题;在确定分布式存储系统中的m个存储节点之间的数据不一致时,能够自动更新分布式存储系统中的存储节点对应的键值对数据,从而实现了提高数据更新效率的技术效果,进而解决了相关技术在分布式存储系统中的多个存储节点之间的数据不一致时,无法自动更新数据导致数据更新效率低的技术问题。
[0082]
实施例2
[0083]
根据本技术实施例,提供了一种针对redis数据缓存的数据更新装置的实施例,其中,图4是根据本技术实施例的一种可选的针对redis数据缓存的数据更新装置的示意图,如图4所示,该装置包括:
[0084]
获取模块401,用于从目标哈希表中获取待校验的m个目标键值对数据以及每个目标键值对数据所对应的目标时间戳信息,其中,每个目标键值对数据为分布式存储系统中的一个存储节点对应的一个键值对数据,每个目标时间戳信息用于表征与该目标时间戳信息相对应的目标键值对数据的数据更新时刻,m个目标键值对数据的主键相同,m为正整数;
[0085]
检测模块402,用于检测m个键值对数据所对应的键值是否相同;
[0086]
确定模块403,用于在m个目标键值对数据中的任意两个目标键值对数据所对应的键值不相同的情况下,确定分布式存储系统中的m个存储节点之间的数据不一致,并基于每个目标时间戳信息检测m个目标键值对数据所对应的数据更新时刻是否相同;
[0087]
更新模块404,用于在m个目标键值对数据中的任意两个目标键值对数据所对应的数据更新时刻不相同的情况下,基于每个目标时间戳信息确定第一键值对数据,并基于第一键值对数据更新分布式存储系统中的存储节点对应的键值对数据,其中,第一键值对数据为m个目标键值对数据中数据更新时刻最晚的目标键值对数据。
[0088]
需要说明的是,上述获取模块401、检测模块402、确定模块403以及更新模块404对应于上述实施例1中的步骤s101至步骤s104,四个模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例1所公开的内容。
[0089]
可选地,针对redis数据缓存的数据更新装置还包括:第一获取模块,用于在从目标哈希表中获取待校验的m个目标键值对数据以及每个目标键值对数据所对应的目标时间戳信息之前,获取分布式存储系统中的每个存储节点对应的目标元数据,得到m个目标元数据;第二获取模块,用于依据m个目标元数据获取每个存储节点对应的多个键值对数据以及每个键值对数据所对应的时间戳信息;存储模块,用于将每个存储节点对应的多个键值对数据以及每个键值对数据所对应的时间戳信息存储至预设哈希表中,得到目标哈希表。
[0090]
可选地,针对redis数据缓存的数据更新装置还包括:第一确定模块,用于在检测m个键值对数据所对应的键值是否相同之后,在m个目标键值对数据所对应的键值相同时,确定分布式存储系统中的m个存储节点之间的数据一致,并将m个目标键值对数据从目标哈希表中删除。
[0091]
可选地,针对redis数据缓存的数据更新装置还包括:划分模块,用于在基于每个目标时间戳信息检测m个目标键值对数据所对应的数据更新时刻是否相同之后,在m个目标键值对数据所对应的数据更新时刻相同的情况下,将m个目标键值对数据划分为n个数据集合,其中,每个数据集合中的目标键值对数据所对应的键值相同,m大于或等于n,n为正整数;第二确定模块,用于在m大于n时,将n个数据集合中目标键值对数据的数量最多的数据集合作为目标数据集合;第三确定模块,用于确定目标数据集合中的目标键值对数据为第二键值对数据;第一更新模块,用于基于第二键值对数据更新分布式存储系统中的存储节点对应的键值对数据。
[0092]
可选地,针对redis数据缓存的数据更新装置还包括:第三获取模块,用于在将m个目标键值对数据划分为n个数据集合之后,在m等于n时,获取每个目标键值对数据所对应的节点序号;第四获取模块,用于基于每个节点序号从m个目标键值对数据中获取第三键值对数据,其中,第三键值对数据为m个目标键值对数据中节点序号最大的目标键值对数据;第二更新模块,用于基于第三键值对数据更新分布式存储系统中的存储节点对应的键值对数据。
[0093]
可选地,第四获取模块包括:排序单元,用于基于每个节点序号对m个目标键值对数据进行排序,得到排序结果;获取单元,用于基于排序结果从m个目标键值对数据中获取第三键值对数据。
[0094]
可选地,更新模块包括:响应单元,用于响应于数据更新指令,其中,数据更新指令中携带有待更新的存储节点对应的唯一标识信息;发送单元,用于基于唯一标识信息将第一键值对数据发送至待更新的存储节点;更新单元,用于依据第一键值对数据更新待更新的存储节点所对应的键值对数据。
[0095]
实施例3
[0096]
根据本技术实施例的另一方面,还提供了计算机可读存储介质,计算机可读存储介质中存储有计算机程序,其中,计算机程序被设置为运行时执行上述的针对redis数据缓存的数据更新方法。
[0097]
实施例4
[0098]
根据本技术实施例的另一方面,还提供了一种电子设备,其中,图5是根据本技术实施例的一种可选的电子设备的示意图,如图5所示,电子设备包括一个或多个处理器;存储器,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,使得一个
或多个处理器实现用于运行程序,其中,程序被设置为运行时执行上述的针对redis数据缓存的数据更新方法。
[0099]
如图5所示,本技术实施例提供了一种电子设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:
[0100]
从目标哈希表中获取待校验的m个目标键值对数据以及每个目标键值对数据所对应的目标时间戳信息,其中,每个目标键值对数据为分布式存储系统中的一个存储节点对应的一个键值对数据,每个目标时间戳信息用于表征与该目标时间戳信息相对应的目标键值对数据的数据更新时刻,m个目标键值对数据的主键相同,m为正整数;检测m个键值对数据所对应的键值是否相同;在m个目标键值对数据中的任意两个目标键值对数据所对应的键值不相同的情况下,确定分布式存储系统中的m个存储节点之间的数据不一致,并基于每个目标时间戳信息检测m个目标键值对数据所对应的数据更新时刻是否相同;在m个目标键值对数据中的任意两个目标键值对数据所对应的数据更新时刻不相同的情况下,基于每个目标时间戳信息确定第一键值对数据,并基于第一键值对数据更新分布式存储系统中的存储节点对应的键值对数据,其中,第一键值对数据为m个目标键值对数据中数据更新时刻最晚的目标键值对数据。
[0101]
可选地,处理器执行程序时还实现以下步骤:在从目标哈希表中获取待校验的m个目标键值对数据以及每个目标键值对数据所对应的目标时间戳信息之前,获取分布式存储系统中的每个存储节点对应的目标元数据,得到m个目标元数据;依据m个目标元数据获取每个存储节点对应的多个键值对数据以及每个键值对数据所对应的时间戳信息;将每个存储节点对应的多个键值对数据以及每个键值对数据所对应的时间戳信息存储至预设哈希表中,得到目标哈希表。
[0102]
可选地,处理器执行程序时还实现以下步骤:在检测m个键值对数据所对应的键值是否相同之后,在m个目标键值对数据所对应的键值相同时,确定分布式存储系统中的m个存储节点之间的数据一致,并将m个目标键值对数据从目标哈希表中删除。
[0103]
可选地,处理器执行程序时还实现以下步骤:在基于每个目标时间戳信息检测m个目标键值对数据所对应的数据更新时刻是否相同之后,在m个目标键值对数据所对应的数据更新时刻相同的情况下,将m个目标键值对数据划分为n个数据集合,其中,每个数据集合中的目标键值对数据所对应的键值相同,m大于或等于n,n为正整数;在m大于n时,将n个数据集合中目标键值对数据的数量最多的数据集合作为目标数据集合;确定目标数据集合中的目标键值对数据为第二键值对数据;基于第二键值对数据更新分布式存储系统中的存储节点对应的键值对数据。
[0104]
可选地,处理器执行程序时还实现以下步骤:在将m个目标键值对数据划分为n个数据集合之后,在m等于n时,获取每个目标键值对数据所对应的节点序号;基于每个节点序号从m个目标键值对数据中获取第三键值对数据,其中,第三键值对数据为m个目标键值对数据中节点序号最大的目标键值对数据;基于第三键值对数据更新分布式存储系统中的存储节点对应的键值对数据。
[0105]
可选地,处理器执行程序时还实现以下步骤:基于每个节点序号对m个目标键值对数据进行排序,得到排序结果;基于排序结果从m个目标键值对数据中获取第三键值对数据。
[0106]
可选地,处理器执行程序时还实现以下步骤:响应于数据更新指令,其中,数据更新指令中携带有待更新的存储节点对应的唯一标识信息;基于唯一标识信息将第一键值对数据发送至待更新的存储节点;依据第一键值对数据更新待更新的存储节点所对应的键值对数据。
[0107]
上述本技术实施例序号仅仅为了描述,不代表实施例的优劣。
[0108]
在本技术的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0109]
在本技术所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
[0110]
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0111]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0112]
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本技术各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0113]
以上仅是本技术的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本技术的保护范围。

技术特征:
1.一种针对redis数据缓存的数据更新方法,其特征在于,包括:从目标哈希表中获取待校验的m个目标键值对数据以及每个所述目标键值对数据所对应的目标时间戳信息,其中,每个所述目标键值对数据为分布式存储系统中的一个存储节点对应的一个键值对数据,每个所述目标时间戳信息用于表征与该目标时间戳信息相对应的目标键值对数据的数据更新时刻,m个所述目标键值对数据的主键相同,m为正整数;检测m个所述目标键值对数据所对应的键值是否相同;在m个所述目标键值对数据中的任意两个所述目标键值对数据所对应的键值不相同的情况下,确定所述分布式存储系统中的m个所述存储节点之间的数据不一致,并基于每个所述目标时间戳信息检测m个所述目标键值对数据所对应的数据更新时刻是否相同;在m个所述目标键值对数据中的任意两个所述目标键值对数据所对应的数据更新时刻不相同的情况下,基于每个所述目标时间戳信息确定第一键值对数据,并基于所述第一键值对数据更新所述分布式存储系统中的存储节点对应的键值对数据,其中,所述第一键值对数据为m个所述目标键值对数据中所述数据更新时刻最晚的目标键值对数据。2.根据权利要求1所述的方法,其特征在于,在从目标哈希表中获取待校验的m个目标键值对数据以及每个所述目标键值对数据所对应的目标时间戳信息之前,所述方法还包括:获取所述分布式存储系统中的每个所述存储节点对应的目标元数据,得到m个所述目标元数据;依据m个所述目标元数据获取每个所述存储节点对应的多个键值对数据以及每个所述键值对数据所对应的时间戳信息;将每个所述存储节点对应的多个所述键值对数据以及每个所述键值对数据所对应的时间戳信息存储至预设哈希表中,得到所述目标哈希表。3.根据权利要求1所述的方法,其特征在于,在检测m个所述目标键值对数据所对应的键值是否相同之后,所述方法还包括:在m个所述目标键值对数据所对应的键值相同时,确定所述分布式存储系统中的m个所述存储节点之间的数据一致,并将m个所述目标键值对数据从所述目标哈希表中删除。4.根据权利要求1所述的方法,其特征在于,在基于每个所述目标时间戳信息检测m个所述目标键值对数据所对应的数据更新时刻是否相同之后,所述方法还包括:在m个所述目标键值对数据所对应的数据更新时刻相同的情况下,将m个所述目标键值对数据划分为n个数据集合,其中,每个所述数据集合中的目标键值对数据所对应的键值相同,m大于或等于n,n为正整数;在m大于n时,将n个所述数据集合中目标键值对数据的数量最多的数据集合作为目标数据集合;确定所述目标数据集合中的目标键值对数据为第二键值对数据;基于所述第二键值对数据更新所述分布式存储系统中的存储节点对应的键值对数据。5.根据权利要求4所述的方法,其特征在于,在将m个所述目标键值对数据划分为n个数据集合之后,所述方法还包括:在m等于n时,获取每个所述目标键值对数据所对应的节点序号;基于每个所述节点序号从m个所述目标键值对数据中获取第三键值对数据,其中,所述
第三键值对数据为m个所述目标键值对数据中节点序号最大的目标键值对数据;基于所述第三键值对数据更新所述分布式存储系统中的存储节点对应的键值对数据。6.根据权利要求5所述的方法,其特征在于,基于每个所述节点序号从m个所述目标键值对数据中获取第三键值对数据,包括:基于每个所述节点序号对m个所述目标键值对数据进行排序,得到排序结果;基于所述排序结果从m个所述目标键值对数据中获取所述第三键值对数据。7.根据权利要求1所述的方法,其特征在于,基于所述第一键值对数据更新所述分布式存储系统中的存储节点对应的键值对数据,包括:响应于数据更新指令,其中,所述数据更新指令中携带有待更新的存储节点对应的唯一标识信息;基于所述唯一标识信息将所述第一键值对数据发送至所述待更新的存储节点;依据所述第一键值对数据更新所述待更新的存储节点所对应的键值对数据。8.一种针对redis数据缓存的数据更新装置,其特征在于,包括:获取模块,用于从目标哈希表中获取待校验的m个目标键值对数据以及每个所述目标键值对数据所对应的目标时间戳信息,其中,每个所述目标键值对数据为分布式存储系统中的一个存储节点对应的一个键值对数据,每个所述目标时间戳信息用于表征与该目标时间戳信息相对应的目标键值对数据的数据更新时刻,m个所述目标键值对数据的主键相同,m为正整数;检测模块,用于检测m个所述目标键值对数据所对应的键值是否相同;确定模块,用于在m个所述目标键值对数据中的任意两个所述目标键值对数据所对应的键值不相同的情况下,确定所述分布式存储系统中的m个所述存储节点之间的数据不一致,并基于每个所述目标时间戳信息检测m个所述目标键值对数据所对应的数据更新时刻是否相同;更新模块,用于在m个所述目标键值对数据中的任意两个所述目标键值对数据所对应的数据更新时刻不相同的情况下,基于每个所述目标时间戳信息确定第一键值对数据,并基于所述第一键值对数据更新所述分布式存储系统中的存储节点对应的键值对数据,其中,所述第一键值对数据为m个所述目标键值对数据中所述数据更新时刻最晚的目标键值对数据。9.一种计算机可读存储介质,其特征在于,计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行所述权利要求1至7任一项中所述的针对redis数据缓存的数据更新方法。10.一种电子设备,其特征在于,包括一个或多个处理器和存储器,所述存储器用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1至7中任意一项所述的针对redis数据缓存的数据更新方法。

技术总结
本申请公开了一种针对redis数据缓存的数据更新方法、装置及电子设备。涉及金融科技领域,该方法包括:检测待校验的M个键值对数据对应的键值是否相同;在M个目标键值对数据中任意两个目标键值对数据的键值不相同时,确定分布式存储系统中M个存储节点之间的数据不一致,基于每个目标时间戳信息检测M个目标键值对数据对应的数据更新时刻是否相同;在M个目标键值对数据中任意两个目标键值对数据对应的数据更新时刻不相同时,基于每个目标时间戳信息确定第一键值对数据,基于第一键值对数据更新存储节点对应的键值对数据。本申请解决了相关技术在分布式存储系统中的多个存储节点之间的数据不一致时,无法自动更新数据导致数据更新效率低的技术问题。据更新效率低的技术问题。据更新效率低的技术问题。


技术研发人员:武文斌 巫春梅 傅兵 黄海鹏
受保护的技术使用者:中国工商银行股份有限公司
技术研发日:2023.04.23
技术公布日:2023/7/25
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐