一种多服务多key值的缓存同步方法、装置及系统与流程

allin2023-03-27  114



1.本发明涉及缓存同步领域,尤其是涉及一种多服务多key值的缓存同步方法、装置及系统。


背景技术:

2.缓存在软件技术中是至关重要的,不可或缺的一部分,可以提高软件对数据操作的整体效率。现存的缓存,包含redis(remote dictionary server,远程字典服务,是一个key-value存储系统)外部缓存组件以及caffeine(基于java 8的高性能,接近最佳的内存缓存库)等等。redis缓存是开发者最喜欢用的非常方便的缓存,caffeine是目前可以称之为最佳缓存框架的高性能缓存库。
3.总而言之,面临不同的业务,采用不同类型的缓存设计才是最优的方案。比如现有业务需求在多服务中根据多key(键值)获取value(值,即数据)的情况,而且数据多,占用小的情况。引用redis缓存组件可以解决多模块同步的问题,但是很多项目并经常用不到redis缓存组件,而是使用caffeine缓存,因为redis缓存组件即占用内存,又导致软件包过大,而且redis缓存组件或caffeine缓存组件均无法实现根据多key进行缓存数据存储的情况。


技术实现要素:

4.本发明为了解决现有技术中存在的问题,创新提出了一种多服务多key值的缓存同步方法、装置及系统,有效解决由于现有技术造成无法实现根据多key进行缓存数据存储,也无法实现多个服务中缓存同步更新的情况的问题,不仅实现了根据多key进行缓存数据存储,而且实现多个服务中缓存同步更新。
5.本发明第一方面提供了一种多服务多key值的缓存同步方法,包括:
6.在每项服务中均创建一个缓存块,每个缓存块均包括第一存储集合以及第二存储集合,所述第一存储集合用于存储缓存块中缓存对象的多个第一类型key值与第二类型key值的对应关系,所述第二存储集合用于存储缓存块中缓存对象的第二类型key值与value值的对应关系;
7.获取待缓存对象的第二类型key值、value值、所有第一类型key值,将待缓存对象的所有第一类型key值以及第二类型key值存储至某一缓存块中的第一存储集合,将待缓存对象的value值存储至与第一存储集合同一缓存块中的第二存储集合;
8.实时监控每项服务中的缓存块,当任意一个缓存块更新后,通知其他服务同步更新缓存块中的缓存对象数据。
9.可选地,所述缓存对象的第二类型key值用于直接确定所述缓存对象的value值,所述缓存对象的第一类型key值用于直接确定所述缓存对象的第二类型key值。
10.进一步地,所述缓存对象的第一类型key值包括用于根据描述缓存对象的value值第一属性的对象标识符,用于根据描述缓存对象的value值第二属性的ip地址,用于根据描
述缓存对象的value值第三属性的对象类型。
11.可选地,还包括:
12.获取待查询缓存对象的第二类型key值或任意一个第一类型key值;
13.根据获取的待查询缓存对象的第二类型key值或任意一个第一类型key值,返回第二存储集合中对应的value值。
14.进一步地,根据获取的待查询缓存对象的第二类型key值或任意一个第一类型key值,返回第二存储集合中对应的value值具体包括:
15.如果获取的待查询缓存对象第二类型key值,根据待查询缓存对象第二类型key值遍历第二存储集合,返回第二存储集合中对应的value值;
16.如果获取的待查询缓存对象任意一个第一类型key值,根据待查询缓存对象的第一类型key值,遍历第一存储集合,在第一存储集合中确定对应的第二类型key值,根据确定的第二类型key值遍历第二存储集合,返回第二存储集合中对应的value值。
17.可选地,还包括:
18.获取待删除缓存对象的第二类型key值或任意一个第一类型key值;
19.根据获取的待删除缓存对象的第二类型key值或任意一个第一类型key值,分别删除第二存储集合中对应的value值、第二类型key值以及第一存储集合中对应的第二类型key值、所有第一类型key值。
20.进一步地,根据获取的待删除缓存对象的第二类型key值或任意一个第一类型key值,分别删除第二存储集合中对应的value值、第二类型key值以及第一存储集合中对应的第二类型key值、所有第一类型key值具体包括:
21.如果获取的待删除缓存对象第二类型key值,根据待删除缓存对象第二类型key值遍历第二存储集合,分别删除第二存储集合中对应的value值、第二类型key值,根据待删除缓存对象第二类型key值遍历第一存储集合,分别删除第一存储集合中对应的第二类型key值、所有第一类型key值;
22.如果获取的待删除缓存对象任意一个第一类型key值,根据待查询缓存对象的第一类型key值,遍历第一存储集合,分别删除第一存储集合中对应的第二类型key值、所有第一类型key值;根据第一类型key值确定的第二类型key值,根据确定的第二类型key值遍历第二存储集合,分别删除第二存储集合中对应的value值、第二类型key值。
23.可选地,实时监控每项服务中的缓存块,当任意一个缓存块更新后,通知其他服务同步更新缓存块中的缓存对象数据具体包括:
24.在每项服务中分别建立监控模块以及调用模块;
25.通过每项服务中的监控模块实时监控对应服务中的缓存块;
26.当任意一个缓存块更新后,通过对应服务中调用模块通知其他服务同步更新缓存块中的缓存对象数据。
27.本发明第二方面提供了一种多服务多key值的缓存同步装置,包括:
28.缓存块创建模块,在每项服务中均创建一个缓存块,每个缓存块均包括第一存储集合以及第二存储集合,所述第一存储集合用于存储缓存块中缓存对象的多个第一类型key值与第二类型key值的对应关系,所述第二存储集合用于存储缓存块中缓存对象的第二类型key值与value值的对应关系;
29.缓存块存储模块,获取待缓存对象的第二类型key值、value值、所有第一类型key值,将待缓存对象的所有第一类型key值以及第二类型key值存储至某一缓存块中的第一存储集合,将待缓存对象的value值存储至与第一存储集合同一缓存块中的第二存储集合;
30.缓存块更新模块,实时监控每项服务中的缓存块,当任意一个缓存块更新后,通知其他服务同步更新缓存块中的缓存对象数据。
31.本发明第三方面提供了一种多服务多key值的缓存同步系统,包括:数据库以及多个服务组件,每个服务组件均包括缓存块创建模块,用于在每项服务中均创建一个缓存块,每个缓存块均包括第一存储集合以及第二存储集合,所述第一存储集合用于存储缓存块中缓存对象的多个第一类型key值与第二类型key值的对应关系,所述第二存储集合用于存储缓存块中缓存对象的第二类型key值与value值的对应关系;每个服务组件中的缓存块用于与数据库通信,进行缓存对象的存储、查询、删除;
32.缓存块存储模块,用于通过数据库获取待缓存对象的第二类型key值、value值、所有第一类型key值,将待缓存对象的所有第一类型key值以及第二类型key值存储至某一缓存块中的第一存储集合,将待缓存对象的value值存储至与第一存储集合同一缓存块中的第二存储集合;
33.缓存块更新模块,用于实时监控对应服务组件中的缓存块,当任意一个缓存块更新后,通知其他服务组件同步更新缓存块中的缓存对象数据。
34.本发明采用的技术方案包括以下技术效果:
35.1、本发明基于在每项服务中均创建一个缓存块,每个缓存块均包括第一存储集合以及第二存储集合,获取待缓存对象的第二类型key值、value值、所有第一类型key值,将待缓存对象的所有第一类型key值以及第二类型key值存储至某一缓存块中的第一存储集合,将待缓存对象的value值存储至与第一存储集合同一缓存块中的第二存储集合;实时监控每项服务中的缓存块,当任意一个缓存块更新后,通知其他服务同步更新缓存块中的缓存对象数据,有效解决由于现有技术造成无法实现根据多key进行缓存数据存储,也无法实现多个服务中缓存同步更新的情况的问题,不仅实现了根据多key进行缓存数据存储,而且实现多个服务中缓存同步更新。
36.2、本发明技术方案中所述缓存对象的第一类型key值包括用于根据描述缓存对象的value值第一属性的对象标识符,用于根据描述缓存对象的value值第二属性的ip地址,用于根据描述缓存对象的value值第三属性的对象类型,不仅实现了根据多key进行缓存数据存储,而且还可以根据多key进行缓存数据检索、删除或修改等,提高了多服务多key值的缓存同步的适用性。
37.3、本发明技术方案中在每项服务中分别建立监控模块以及调用模块;通过每项服务中的监控模块实时监控对应服务中的缓存块;当任意一个缓存块更新后,通过对应服务中调用模块通知其他服务同步更新缓存块中的缓存对象数据,实现了多服务中缓存数据的同步。
38.应当理解的是以上的一般描述以及后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
39.为了更清楚说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单介绍,显而易见的,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
40.图1为本发明方案中实施例一方法的流程示意图(一);
41.图2为本发明方案中实施例一方法中缓存对象数据结构(缓存块中第一存储集合以及第二存储集合存储形式)示意图;
42.图3为本发明方案中实施例一方法中步骤s3的流程示意图;
43.图4为本发明方案中实施例一方法中其中一服务中缓存更新后同步其他服务中缓存的结构示意图(以服务1中缓存更新为例说明);
44.图5为本发明方案中实施例一方法的流程示意图(二);
45.图6为本发明方案中实施例一方法的流程示意图(三);
46.图7为本发明方案中实施例二装置的结构示意图;
47.图8为本发明方案中实施例三系统的结构示意图。
具体实施方式
48.为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。
49.实施例一
50.如图1所示,本发明提供了一种多服务多key值的缓存同步方法,包括:
51.s1,在每项服务中均创建一个缓存块,每个缓存块均包括第一存储集合以及第二存储集合,所述第一存储集合用于存储缓存块中缓存对象的多个第一类型key值与第二类型key值的对应关系,所述第二存储集合用于存储缓存块中缓存对象的第二类型key值与value值的对应关系;
52.s2,获取待缓存对象的第二类型key值、value值、所有第一类型key值,将待缓存对象的所有第一类型key值以及第二类型key值存储至某一缓存块中的第一存储集合,将待缓存对象的value值存储至与第一存储集合同一缓存块中的第二存储集合;
53.s3,实时监控每项服务中的缓存块,当任意一个缓存块更新后,通知其他服务同步更新缓存块中的缓存对象数据。
54.其中,在步骤s1中,缓存对象的第二类型key值用于直接确定缓存对象的value值,缓存对象的第一类型key值用于直接确定缓存对象的第二类型key值。即,第二类型key值为相对于第一类型key值的value值,相对于第二存储集合中value值中的key值。
55.具体地,缓存对象的第一类型key值包括用于根据描述缓存对象的value值第一属性的对象标识符(serial),用于根据描述缓存对象的value值第二属性的ip地址,用于根据描述缓存对象的value值第三属性的对象类型(vendor)。
56.如图2所示,获取待缓存对象的第二类型key值、value值、所有第一类型key值,将待缓存对象的所有第一类型key值以及第二类型key值存储至某一缓存块中的第一存储集合,将待缓存对象的value值存储至与第一存储集合同一缓存块中的第二存储集合,即获取待缓存对象的第二类型key值、value值、所有第一类型key值,然后第一存储集合(keymap)用于存储缓存块中待缓存对象的所有第一类型key值与第二类型key值的对应关系,即存放键值key1(第一类型key值)和数据key(第二类型key值)、键值key2(第一类型key值)和数据key(第二类型key值)、键值key3(第一类型key值)和数据key(第二类型key值);然后第二存储集合(valuemap)用于存储缓存块中待缓存对象的第二类型key值与value值的对应关系,即,存放缓存对象的第二类型key值与缓存对象的value值。
57.对应的,在步骤s2中,缓存对象数据结构与第一存储集合以及第二存储集合的存储形式对应相同,第一存储集合以及第二存储集合的存储形式如下:
58.第一存储集合keymap:{serial:id,ip:id,vendor:id}
59.第二存储集合valuemap:{id:value},即将serial、ip、vendor分别作为多个第一类型key值存储至第一存储集合,id(同id)作为第二类型key值分别存储至第一存储集合以及第二存储集合,value作为value值存储至第二存储集合中,需要说明的是,缓存对象存储时,可以先存储至某一项服务(可以是客户当前业务操作运行的服务中,也可以是客户当前指定的服务中)中的缓存块中,然后再同步至其他服务中的缓存块,即实现缓存数据的分布式同步存储。
60.其中,在步骤s3中,如图3-图4所示,步骤s3具体包括:
61.s31,在每项服务中分别建立监控模块以及调用模块;
62.s32,通过每项服务中的监控模块实时监控对应服务中的缓存块;
63.s33,当任意一个缓存块更新后,通过对应服务中调用模块通知其他服务同步更新缓存块中的缓存对象数据。
64.其中,在步骤s3中,以服务1中缓存块发生变化为例,进行说明,当服务1中的监控模块监控到服务1中的缓存块发生变化时,会通过服务1中的调用模块通知其他服务(服务2以及服务3)中的调用模块,并调用对应服务中的缓存块进行同步更新,每个服务都有自己缓存块,但是共用一个数据库,每个服务都能操作数据库,但是只能操作自己的缓存块,因此通过调用模块通知其他服务需要更新各自的缓存,然后各个服务更新自己的缓存。
65.监控模块可以通过建立监控进程(observer进程)实现,调用模块可以通过建立创建多服务互通模块rmi(远程调用rmi进程),监控模块作出响应之后,通过调用模块做到多服务互通,同步缓存块中缓存。
66.进一步地,如图5所示,本发明技术方案还提供了一种多服务多key值的缓存同步方法,还包括:
67.s4,获取待查询缓存对象的第二类型key值或任意一个第一类型key值;
68.s5,根据获取的待查询缓存对象的第二类型key值或任意一个第一类型key值,返回第二存储集合中对应的value值。
69.其中,在步骤s5中,根据获取的待查询缓存对象的第二类型key值或任意一个第一类型key值,返回第二存储集合中对应的value值具体包括:
70.如果获取的待查询缓存对象第二类型key值,根据待查询缓存对象第二类型key值
遍历第二存储集合,返回第二存储集合中对应的value值;
71.如果获取的待查询缓存对象任意一个第一类型key值,根据待查询缓存对象的第一类型key值,遍历第一存储集合,在第一存储集合中确定对应的第二类型key值,根据确定的第二类型key值遍历第二存储集合,返回第二存储集合中对应的value值。
72.具体地,情况1:已知id(第二类型key值),获取value:
73.valuemap.contains(id)=true(包含该key)
74.valuemap.get(id)=value
75.返回获取的value。
76.情况2:已知ip(第一类型key值),获取value
77.valuemap(第二存储集合).contains(ip)=false(不包含该key)
78.keymap(第一存储集合).contains(ip)=true(包含该key)
79.keymap.get(ip)=id;
80.valuemap.get(id)=value
81.返回获取的value。
82.情况3:已知model(型号)查询value
83.valuemap.contains(model)=false(不包含该key);
84.keymap.contains(model)=false(不包含该key);
85.返回获取不到value。
86.进一步地,如图6所示,本发明技术方案还提供了一种多服务多key值的缓存同步方法,还包括:
87.s6,获取待删除缓存对象的第二类型key值或任意一个第一类型key值;
88.s7,根据获取的待删除缓存对象的第二类型key值或任意一个第一类型key值,分别删除第二存储集合中对应的value值、第二类型key值以及第一存储集合中对应的第二类型key值、所有第一类型key值。
89.其中,在步骤s7中,根据获取的待删除缓存对象的第二类型key值或任意一个第一类型key值,分别删除第二存储集合中对应的value值、第二类型key值以及第一存储集合中对应的第二类型key值、所有第一类型key值具体包括:
90.如果获取的待删除缓存对象第二类型key值,根据待删除缓存对象第二类型key值遍历第二存储集合,分别删除第二存储集合中对应的value值、第二类型key值,根据待删除缓存对象第二类型key值遍历第一存储集合,分别删除第一存储集合中对应的第二类型key值、所有第一类型key值;
91.如果获取的待删除缓存对象任意一个第一类型key值,根据待查询缓存对象的第一类型key值,遍历第一存储集合,分别删除第一存储集合中对应的第二类型key值、所有第一类型key值;根据第一类型key值确定的第二类型key值,根据确定的第二类型key值遍历第二存储集合,分别删除第二存储集合中对应的value值、第二类型key值。
92.删除时,举例说明,情况1:根据id(第二类型key值)删除:
93.valuemap.contains(ip)=true(包含该key);
94.valuemap.delete(id)
95.keymap获取所有的键值对entryset
96.entryset.getvalue()=id则entryset.getkey=serial,ip,vendor
97.keymap.delete(serial);
98.keymap.delete(ip);
99.keymap.delete(vendor);
100.情况2:根据ip(第一类型key值)删除
101.valuemap.contains(ip)=false(不包含该key);
102.keymap.contains(ip)=true(包含该key)
103.keymap.get(ip)=id;
104.keymap获取所有的键值对entryset
105.entryset.getvalue()=id则entryset.getkey=serial,ip,vendor
106.keymap.delete(serial);
107.keymap.delete(ip);
108.keymap.delete(vendor);
109.valuemap.delete(id);
110.情况3:根据model(型号)删除
111.valuemap.contains(model)=false(不包含该key);
112.keymap.contains(model)=false(不包含该key);
113.返回不用删除。
114.本发明基于在每项服务中均创建一个缓存块,每个缓存块均包括第一存储集合以及第二存储集合,获取待缓存对象的第二类型key值、value值、所有第一类型key值,将待缓存对象的所有第一类型key值以及第二类型key值存储至某一缓存块中的第一存储集合,将待缓存对象的value值存储至与第一存储集合同一缓存块中的第二存储集合;实时监控每项服务中的缓存块,当任意一个缓存块更新后,通知其他服务同步更新缓存块中的缓存对象数据,有效解决由于现有技术造成无法实现根据多key进行缓存数据存储,也无法实现多个服务中缓存同步更新的情况的问题,不仅实现了根据多key进行缓存数据存储,而且实现多个服务中缓存同步更新。
115.本发明技术方案中所述缓存对象的第一类型key值包括用于根据描述缓存对象的value值第一属性的对象标识符,用于根据描述缓存对象的value值第二属性的ip地址,用于根据描述缓存对象的value值第三属性的对象类型,不仅实现了根据多key进行缓存数据存储,而且还可以根据多key进行缓存数据检索、删除或修改等,提高了多服务多key值的缓存同步的适用性。
116.本发明技术方案中在每项服务中分别建立监控模块以及调用模块;通过每项服务中的监控模块实时监控对应服务中的缓存块;当任意一个缓存块更新后,通过对应服务中调用模块通知其他服务同步更新缓存块中的缓存对象数据,实现了多服务中缓存数据的同步。
117.实施例二
118.如图7所示,本发明技术方案还提供了一种多服务多key值的缓存同步装置,包括:
119.缓存块创建模块101,在每项服务中均创建一个缓存块,每个缓存块均包括第一存储集合以及第二存储集合,所述第一存储集合用于存储缓存块中缓存对象的多个第一类型
key值与第二类型key值的对应关系,所述第二存储集合用于存储缓存块中缓存对象的第二类型key值与value值的对应关系;
120.缓存块存储模块102,获取待缓存对象的第二类型key值、value值、所有第一类型key值,将待缓存对象的所有第一类型key值以及第二类型key值存储至某一缓存块中的第一存储集合,将待缓存对象的value值存储至与第一存储集合同一缓存块中的第二存储集合;
121.缓存块更新模块103,实时监控每项服务中的缓存块,当任意一个缓存块更新后,通知其他服务同步更新缓存块中的缓存对象数据。
122.本发明基于在每项服务中均创建一个缓存块,每个缓存块均包括第一存储集合以及第二存储集合,获取待缓存对象的第二类型key值、value值、所有第一类型key值,将待缓存对象的所有第一类型key值以及第二类型key值存储至某一缓存块中的第一存储集合,将待缓存对象的value值存储至与第一存储集合同一缓存块中的第二存储集合;实时监控每项服务中的缓存块,当任意一个缓存块更新后,通知其他服务同步更新缓存块中的缓存对象数据,有效解决由于现有技术造成无法实现根据多key进行缓存数据存储,也无法实现多个服务中缓存同步更新的情况的问题,不仅实现了根据多key进行缓存数据存储,而且实现多个服务中缓存同步更新。
123.本发明技术方案中所述缓存对象的第一类型key值包括用于根据描述缓存对象的value值第一属性的对象标识符,用于根据描述缓存对象的value值第二属性的ip地址,用于根据描述缓存对象的value值第三属性的对象类型,不仅实现了根据多key进行缓存数据存储,而且还可以根据多key进行缓存数据检索、删除或修改等,提高了多服务多key值的缓存同步的适用性。
124.本发明技术方案中在每项服务中分别建立监控模块以及调用模块;通过每项服务中的监控模块实时监控对应服务中的缓存块;当任意一个缓存块更新后,通过对应服务中调用模块通知其他服务同步更新缓存块中的缓存对象数据,实现了多服务中缓存数据的同步。
125.实施例三
126.如图8所示,本发明技术方案还提供了一种多服务多key值的缓存同步系统,包括:数据库201以及多个服务组件202,每个服务组件202均包括缓存块创建模块101,用于在每项服务组件202中均创建一个缓存块,每个缓存块均包括第一存储集合以及第二存储集合,第一存储集合用于存储缓存块中缓存对象的多个第一类型key值与第二类型key值的对应关系,第二存储集合用于存储缓存块中缓存对象的第二类型key值与value值的对应关系;每个服务组件202中的缓存块用于与数据库201通信,进行缓存对象的存储、查询、删除;
127.缓存块存储模块102,用于通过数据库201获取待缓存对象的第二类型key值、value值、所有第一类型key值,将待缓存对象的所有第一类型key值以及第二类型key值存储至某一缓存块中的第一存储集合,将待缓存对象的value值存储至与第一存储集合同一缓存块中的第二存储集合;
128.缓存块更新模块103,用于实时监控对应服务组件202中的缓存块,当任意一个缓存块更新后,通知其他服务组件202同步更新缓存块中的缓存对象数据。
129.每个服务组件202都有自己缓存块,但是共用一个数据库201,每个服务组件202都
能操作数据库,但是只能操作自己的缓存块,因此通过调用模块通知其他服务组件202需要更新各自的缓存,然后各个服务组件202更新自己的缓存。
130.其中,数据库可以为db(database,是依照某种数据模型组织起来并存放二级存储器中的数据集合)数据库,也可以为其他类型数据库,本发明在此不做限制。
131.本发明基于在每项服务中均创建一个缓存块,每个缓存块均包括第一存储集合以及第二存储集合,获取待缓存对象的第二类型key值、value值、所有第一类型key值,将待缓存对象的所有第一类型key值以及第二类型key值存储至某一缓存块中的第一存储集合,将待缓存对象的value值存储至与第一存储集合同一缓存块中的第二存储集合;实时监控每项服务中的缓存块,当任意一个缓存块更新后,通知其他服务同步更新缓存块中的缓存对象数据,有效解决由于现有技术造成无法实现根据多key进行缓存数据存储,也无法实现多个服务中缓存同步更新的情况的问题,不仅实现了根据多key进行缓存数据存储,而且实现多个服务中缓存同步更新。
132.本发明技术方案中所述缓存对象的第一类型key值包括用于根据描述缓存对象的value值第一属性的对象标识符,用于根据描述缓存对象的value值第二属性的ip地址,用于根据描述缓存对象的value值第三属性的对象类型,不仅实现了根据多key进行缓存数据存储,而且还可以根据多key进行缓存数据检索、删除或修改等,提高了多服务多key值的缓存同步的适用性。
133.本发明技术方案中在每项服务中分别建立监控模块以及调用模块;通过每项服务中的监控模块实时监控对应服务中的缓存块;当任意一个缓存块更新后,通过对应服务中调用模块通知其他服务同步更新缓存块中的缓存对象数据,实现了多服务中缓存数据的同步。

技术特征:
1.一种多服务多key值的缓存同步方法,其特征是,包括:在每项服务中均创建一个缓存块,每个缓存块均包括第一存储集合以及第二存储集合,所述第一存储集合用于存储缓存块中缓存对象的多个第一类型key值与第二类型key值的对应关系,所述第二存储集合用于存储缓存块中缓存对象的第二类型key值与value值的对应关系;获取待缓存对象的第二类型key值、value值、所有第一类型key值,将待缓存对象的所有第一类型key值以及第二类型key值存储至某一缓存块中的第一存储集合,将待缓存对象的value值存储至与第一存储集合同一缓存块中的第二存储集合;实时监控每项服务中的缓存块,当任意一个缓存块更新后,通知其他服务同步更新缓存块中的缓存对象数据。2.根据权利要求1所述的一种多服务多key值的缓存同步方法,其特征是,所述缓存对象的第二类型key值用于直接确定所述缓存对象的value值,所述缓存对象的第一类型key值用于直接确定所述缓存对象的第二类型key值。3.根据权利要求2所述的一种多服务多key值的缓存同步方法,其特征是,所述缓存对象的第一类型key值包括用于根据描述缓存对象的value值第一属性的对象标识符,用于根据描述缓存对象的value值第二属性的ip地址,用于根据描述缓存对象的value值第三属性的对象类型。4.根据权利要求1所述的一种多服务多key值的缓存同步方法,其特征是,还包括:获取待查询缓存对象的第二类型key值或任意一个第一类型key值;根据获取的待查询缓存对象的第二类型key值或任意一个第一类型key值,返回第二存储集合中对应的value值。5.根据权利要求4所述的一种多服务多key值的缓存同步方法,其特征是,根据获取的待查询缓存对象的第二类型key值或任意一个第一类型key值,返回第二存储集合中对应的value值具体包括:如果获取的待查询缓存对象第二类型key值,根据待查询缓存对象第二类型key值遍历第二存储集合,返回第二存储集合中对应的value值;如果获取的待查询缓存对象任意一个第一类型key值,根据待查询缓存对象的第一类型key值,遍历第一存储集合,在第一存储集合中确定对应的第二类型key值,根据确定的第二类型key值遍历第二存储集合,返回第二存储集合中对应的value值。6.根据权利要求1所述的一种多服务多key值的缓存同步方法,其特征是,还包括:获取待删除缓存对象的第二类型key值或任意一个第一类型key值;根据获取的待删除缓存对象的第二类型key值或任意一个第一类型key值,分别删除第二存储集合中对应的value值、第二类型key值以及第一存储集合中对应的第二类型key值、所有第一类型key值。7.根据权利要求6所述的一种多服务多key值的缓存同步方法,其特征是,根据获取的待删除缓存对象的第二类型key值或任意一个第一类型key值,分别删除第二存储集合中对应的value值、第二类型key值以及第一存储集合中对应的第二类型key值、所有第一类型key值具体包括:如果获取的待删除缓存对象第二类型key值,根据待删除缓存对象第二类型key值遍历
第二存储集合,分别删除第二存储集合中对应的value值、第二类型key值,根据待删除缓存对象第二类型key值遍历第一存储集合,分别删除第一存储集合中对应的第二类型key值、所有第一类型key值;如果获取的待删除缓存对象任意一个第一类型key值,根据待查询缓存对象的第一类型key值,遍历第一存储集合,分别删除第一存储集合中对应的第二类型key值、所有第一类型key值;根据第一类型key值确定的第二类型key值,根据确定的第二类型key值遍历第二存储集合,分别删除第二存储集合中对应的value值、第二类型key值。8.根据权利要求1所述的一种多服务多key值的缓存同步方法,其特征是,实时监控每项服务中的缓存块,当任意一个缓存块更新后,通知其他服务同步更新缓存块中的缓存对象数据具体包括:在每项服务中分别建立监控模块以及调用模块;通过每项服务中的监控模块实时监控对应服务中的缓存块;当任意一个缓存块更新后,通过对应服务中调用模块通知其他服务同步更新缓存块中的缓存对象数据。9.一种多服务多key值的缓存同步装置,其特征是,包括:缓存块创建模块,在每项服务中均创建一个缓存块,每个缓存块均包括第一存储集合以及第二存储集合,所述第一存储集合用于存储缓存块中缓存对象的多个第一类型key值与第二类型key值的对应关系,所述第二存储集合用于存储缓存块中缓存对象的第二类型key值与value值的对应关系;缓存块存储模块,获取待缓存对象的第二类型key值、value值、所有第一类型key值,将待缓存对象的所有第一类型key值以及第二类型key值存储至某一缓存块中的第一存储集合,将待缓存对象的value值存储至与第一存储集合同一缓存块中的第二存储集合;缓存块更新模块,实时监控每项服务中的缓存块,当任意一个缓存块更新后,通知其他服务同步更新缓存块中的缓存对象数据。10.一种多服务多key值的缓存同步系统,其特征是,包括:数据库以及多个服务组件,每个服务组件均包括缓存块创建模块,用于在每项服务中均创建一个缓存块,每个缓存块均包括第一存储集合以及第二存储集合,所述第一存储集合用于存储缓存块中缓存对象的多个第一类型key值与第二类型key值的对应关系,所述第二存储集合用于存储缓存块中缓存对象的第二类型key值与value值的对应关系;每个服务组件中的缓存块用于与数据库通信,进行缓存对象的存储、查询、删除;缓存块存储模块,用于通过数据库获取待缓存对象的第二类型key值、value值、所有第一类型key值,将待缓存对象的所有第一类型key值以及第二类型key值存储至某一缓存块中的第一存储集合,将待缓存对象的value值存储至与第一存储集合同一缓存块中的第二存储集合;缓存块更新模块,用于实时监控对应服务组件中的缓存块,当任意一个缓存块更新后,通知其他服务组件同步更新缓存块中的缓存对象数据。

技术总结
本发明提出了一种多服务多key值的缓存同步方法、装置及系统,该方法包括:在每项服务中均创建一个缓存块,每个缓存块均包括第一存储集合以及第二存储集合,获取待缓存对象的第二类型key值、value值、所有第一类型key值,将待缓存对象的所有第一类型key值以及第二类型key值存储至某一缓存块中的第一存储集合,将待缓存对象的value值存储至与第一存储集合同一缓存块中的第二存储集合;当任意一个缓存块更新后,通知其他服务同步更新缓存块中的缓存对象数据,基于该方法,本发明还提出了一种多服务多key值的缓存同步装置及系统,不仅实现了根据多key进行缓存数据存储,而且实现多个服务中缓存同步更新。服务中缓存同步更新。服务中缓存同步更新。


技术研发人员:李普新 张俊雷
受保护的技术使用者:苏州浪潮智能科技有限公司
技术研发日:2022.03.30
技术公布日:2022/7/5
转载请注明原文地址: https://www.8miu.com/read-7982.html

最新回复(0)