CN114706925B - 一种多服务多key值的缓存同步方法、装置及系统 - Google Patents

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

Info

Publication number
CN114706925B
CN114706925B CN202210323783.1A CN202210323783A CN114706925B CN 114706925 B CN114706925 B CN 114706925B CN 202210323783 A CN202210323783 A CN 202210323783A CN 114706925 B CN114706925 B CN 114706925B
Authority
CN
China
Prior art keywords
cache
type key
value
storage set
key value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202210323783.1A
Other languages
English (en)
Other versions
CN114706925A (zh
Inventor
李普新
张俊雷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN202210323783.1A priority Critical patent/CN114706925B/zh
Publication of CN114706925A publication Critical patent/CN114706925A/zh
Application granted granted Critical
Publication of CN114706925B publication Critical patent/CN114706925B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

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

Description

一种多服务多key值的缓存同步方法、装置及系统
技术领域
本发明涉及缓存同步领域,尤其是涉及一种多服务多key值的缓存同步方法、装置及系统。
背景技术
缓存在软件技术中是至关重要的,不可或缺的一部分,可以提高软件对数据操作的整体效率。现存的缓存,包含redis(Remote Dictionary Server,远程字典服务,是一个key-value存储系统)外部缓存组件以及caffeine(基于Java 8的高性能,接近最佳的内存缓存库)等等。redis缓存是开发者最喜欢用的非常方便的缓存,caffeine是目前可以称之为最佳缓存框架的高性能缓存库。
总而言之,面临不同的业务,采用不同类型的缓存设计才是最优的方案。比如现有业务需求在多服务中根据多key(键值)获取value(值,即数据)的情况,而且数据多,占用小的情况。引用redis缓存组件可以解决多模块同步的问题,但是很多项目并经常用不到redis缓存组件,而是使用caffeine缓存,因为redis缓存组件即占用内存,又导致软件包过大,而且redis缓存组件或caffeine缓存组件均无法实现根据多key进行缓存数据存储的情况。
发明内容
本发明为了解决现有技术中存在的问题,创新提出了一种多服务多key值的缓存同步方法、装置及系统,有效解决由于现有技术造成无法实现根据多key进行缓存数据存储,也无法实现多个服务中缓存同步更新的情况的问题,不仅实现了根据多key进行缓存数据存储,而且实现多个服务中缓存同步更新。
本发明第一方面提供了一种多服务多key值的缓存同步方法,包括:
在每项服务中均创建一个缓存块,每个缓存块均包括第一存储集合以及第二存储集合,所述第一存储集合用于存储缓存块中缓存对象的多个第一类型key值与第二类型key值的对应关系,所述第二存储集合用于存储缓存块中缓存对象的第二类型key值与value值的对应关系;
获取待缓存对象的第二类型key值、value值、所有第一类型key值,将待缓存对象的所有第一类型key值以及第二类型key值存储至某一缓存块中的第一存储集合,将待缓存对象的value值存储至与第一存储集合同一缓存块中的第二存储集合;
实时监控每项服务中的缓存块,当任意一个缓存块更新后,通知其他服务同步更新缓存块中的缓存对象数据。
可选地,所述缓存对象的第二类型key值用于直接确定所述缓存对象的value值,所述缓存对象的第一类型key值用于直接确定所述缓存对象的第二类型key值。
进一步地,所述缓存对象的第一类型key值包括用于根据描述缓存对象的value值第一属性的对象标识符,用于根据描述缓存对象的value值第二属性的IP地址,用于根据描述缓存对象的value值第三属性的对象类型。
可选地,还包括:
获取待查询缓存对象的第二类型key值或任意一个第一类型key值;
根据获取的待查询缓存对象的第二类型key值或任意一个第一类型key值,返回第二存储集合中对应的value值。
进一步地,根据获取的待查询缓存对象的第二类型key值或任意一个第一类型key值,返回第二存储集合中对应的value值具体包括:
如果获取的待查询缓存对象第二类型key值,根据待查询缓存对象第二类型key值遍历第二存储集合,返回第二存储集合中对应的value值;
如果获取的待查询缓存对象任意一个第一类型key值,根据待查询缓存对象的第一类型key值,遍历第一存储集合,在第一存储集合中确定对应的第二类型key值,根据确定的第二类型key值遍历第二存储集合,返回第二存储集合中对应的value值。
可选地,还包括:
获取待删除缓存对象的第二类型key值或任意一个第一类型key值;
根据获取的待删除缓存对象的第二类型key值或任意一个第一类型key值,分别删除第二存储集合中对应的value值、第二类型key值以及第一存储集合中对应的第二类型key值、所有第一类型key值。
进一步地,根据获取的待删除缓存对象的第二类型key值或任意一个第一类型key值,分别删除第二存储集合中对应的value值、第二类型key值以及第一存储集合中对应的第二类型key值、所有第一类型key值具体包括:
如果获取的待删除缓存对象第二类型key值,根据待删除缓存对象第二类型key值遍历第二存储集合,分别删除第二存储集合中对应的value值、第二类型key值,根据待删除缓存对象第二类型key值遍历第一存储集合,分别删除第一存储集合中对应的第二类型key值、所有第一类型key值;
如果获取的待删除缓存对象任意一个第一类型key值,根据待查询缓存对象的第一类型key值,遍历第一存储集合,分别删除第一存储集合中对应的第二类型key值、所有第一类型key值;根据第一类型key值确定的第二类型key值,根据确定的第二类型key值遍历第二存储集合,分别删除第二存储集合中对应的value值、第二类型key值。
可选地,实时监控每项服务中的缓存块,当任意一个缓存块更新后,通知其他服务同步更新缓存块中的缓存对象数据具体包括:
在每项服务中分别建立监控模块以及调用模块;
通过每项服务中的监控模块实时监控对应服务中的缓存块;
当任意一个缓存块更新后,通过对应服务中调用模块通知其他服务同步更新缓存块中的缓存对象数据。
本发明第二方面提供了一种多服务多key值的缓存同步装置,包括:
缓存块创建模块,在每项服务中均创建一个缓存块,每个缓存块均包括第一存储集合以及第二存储集合,所述第一存储集合用于存储缓存块中缓存对象的多个第一类型key值与第二类型key值的对应关系,所述第二存储集合用于存储缓存块中缓存对象的第二类型key值与value值的对应关系;
缓存块存储模块,获取待缓存对象的第二类型key值、value值、所有第一类型key值,将待缓存对象的所有第一类型key值以及第二类型key值存储至某一缓存块中的第一存储集合,将待缓存对象的value值存储至与第一存储集合同一缓存块中的第二存储集合;
缓存块更新模块,实时监控每项服务中的缓存块,当任意一个缓存块更新后,通知其他服务同步更新缓存块中的缓存对象数据。
本发明第三方面提供了一种多服务多key值的缓存同步系统,包括:数据库以及多个服务组件,每个服务组件均包括缓存块创建模块,用于在每项服务中均创建一个缓存块,每个缓存块均包括第一存储集合以及第二存储集合,所述第一存储集合用于存储缓存块中缓存对象的多个第一类型key值与第二类型key值的对应关系,所述第二存储集合用于存储缓存块中缓存对象的第二类型key值与value值的对应关系;每个服务组件中的缓存块用于与数据库通信,进行缓存对象的存储、查询、删除;
缓存块存储模块,用于通过数据库获取待缓存对象的第二类型key值、value值、所有第一类型key值,将待缓存对象的所有第一类型key值以及第二类型key值存储至某一缓存块中的第一存储集合,将待缓存对象的value值存储至与第一存储集合同一缓存块中的第二存储集合;
缓存块更新模块,用于实时监控对应服务组件中的缓存块,当任意一个缓存块更新后,通知其他服务组件同步更新缓存块中的缓存对象数据。
本发明采用的技术方案包括以下技术效果:
1、本发明基于在每项服务中均创建一个缓存块,每个缓存块均包括第一存储集合以及第二存储集合,获取待缓存对象的第二类型key值、value值、所有第一类型key值,将待缓存对象的所有第一类型key值以及第二类型key值存储至某一缓存块中的第一存储集合,将待缓存对象的value值存储至与第一存储集合同一缓存块中的第二存储集合;实时监控每项服务中的缓存块,当任意一个缓存块更新后,通知其他服务同步更新缓存块中的缓存对象数据,有效解决由于现有技术造成无法实现根据多key进行缓存数据存储,也无法实现多个服务中缓存同步更新的情况的问题,不仅实现了根据多key进行缓存数据存储,而且实现多个服务中缓存同步更新。
2、本发明技术方案中所述缓存对象的第一类型key值包括用于根据描述缓存对象的value值第一属性的对象标识符,用于根据描述缓存对象的value值第二属性的IP地址,用于根据描述缓存对象的value值第三属性的对象类型,不仅实现了根据多key进行缓存数据存储,而且还可以根据多key进行缓存数据检索、删除或修改等,提高了多服务多key值的缓存同步的适用性。
3、本发明技术方案中在每项服务中分别建立监控模块以及调用模块;通过每项服务中的监控模块实时监控对应服务中的缓存块;当任意一个缓存块更新后,通过对应服务中调用模块通知其他服务同步更新缓存块中的缓存对象数据,实现了多服务中缓存数据的同步。
应当理解的是以上的一般描述以及后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
为了更清楚说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单介绍,显而易见的,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明方案中实施例一方法的流程示意图(一);
图2为本发明方案中实施例一方法中缓存对象数据结构(缓存块中第一存储集合以及第二存储集合存储形式)示意图;
图3为本发明方案中实施例一方法中步骤S3的流程示意图;
图4为本发明方案中实施例一方法中其中一服务中缓存更新后同步其他服务中缓存的结构示意图(以服务1中缓存更新为例说明);
图5为本发明方案中实施例一方法的流程示意图(二);
图6为本发明方案中实施例一方法的流程示意图(三);
图7为本发明方案中实施例二装置的结构示意图;
图8为本发明方案中实施例三系统的结构示意图。
具体实施方式
为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。
实施例一
如图1所示,本发明提供了一种多服务多key值的缓存同步方法,包括:
S1,在每项服务中均创建一个缓存块,每个缓存块均包括第一存储集合以及第二存储集合,所述第一存储集合用于存储缓存块中缓存对象的多个第一类型key值与第二类型key值的对应关系,所述第二存储集合用于存储缓存块中缓存对象的第二类型key值与value值的对应关系;
S2,获取待缓存对象的第二类型key值、value值、所有第一类型key值,将待缓存对象的所有第一类型key值以及第二类型key值存储至某一缓存块中的第一存储集合,将待缓存对象的value值存储至与第一存储集合同一缓存块中的第二存储集合;
S3,实时监控每项服务中的缓存块,当任意一个缓存块更新后,通知其他服务同步更新缓存块中的缓存对象数据。
其中,在步骤S1中,缓存对象的第二类型key值用于直接确定缓存对象的value值,缓存对象的第一类型key值用于直接确定缓存对象的第二类型key值。即,第二类型key值为相对于第一类型key值的value值,相对于第二存储集合中value值中的key值。
具体地,缓存对象的第一类型key值包括用于根据描述缓存对象的value值第一属性的对象标识符(serial),用于根据描述缓存对象的value值第二属性的IP地址,用于根据描述缓存对象的value值第三属性的对象类型(vendor)。
如图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值。
对应的,在步骤S2中,缓存对象数据结构与第一存储集合以及第二存储集合的存储形式对应相同,第一存储集合以及第二存储集合的存储形式如下:
第一存储集合keyMap:{serial:id,ip:id,vendor:id}
第二存储集合valueMap:{id:value},即将serial、IP、vendor分别作为多个第一类型key值存储至第一存储集合,ID(同id)作为第二类型key值分别存储至第一存储集合以及第二存储集合,value作为value值存储至第二存储集合中,需要说明的是,缓存对象存储时,可以先存储至某一项服务(可以是客户当前业务操作运行的服务中,也可以是客户当前指定的服务中)中的缓存块中,然后再同步至其他服务中的缓存块,即实现缓存数据的分布式同步存储。
其中,在步骤S3中,如图3-图4所示,步骤S3具体包括:
S31,在每项服务中分别建立监控模块以及调用模块;
S32,通过每项服务中的监控模块实时监控对应服务中的缓存块;
S33,当任意一个缓存块更新后,通过对应服务中调用模块通知其他服务同步更新缓存块中的缓存对象数据。
其中,在步骤S3中,以服务1中缓存块发生变化为例,进行说明,当服务1中的监控模块监控到服务1中的缓存块发生变化时,会通过服务1中的调用模块通知其他服务(服务2以及服务3)中的调用模块,并调用对应服务中的缓存块进行同步更新,每个服务都有自己缓存块,但是共用一个数据库,每个服务都能操作数据库,但是只能操作自己的缓存块,因此通过调用模块通知其他服务需要更新各自的缓存,然后各个服务更新自己的缓存。
监控模块可以通过建立监控进程(observer进程)实现,调用模块可以通过建立创建多服务互通模块rmi(远程调用RMI进程),监控模块作出响应之后,通过调用模块做到多服务互通,同步缓存块中缓存。
进一步地,如图5所示,本发明技术方案还提供了一种多服务多key值的缓存同步方法,还包括:
S4,获取待查询缓存对象的第二类型key值或任意一个第一类型key值;
S5,根据获取的待查询缓存对象的第二类型key值或任意一个第一类型key值,返回第二存储集合中对应的value值。
其中,在步骤S5中,根据获取的待查询缓存对象的第二类型key值或任意一个第一类型key值,返回第二存储集合中对应的value值具体包括:
如果获取的待查询缓存对象第二类型key值,根据待查询缓存对象第二类型key值遍历第二存储集合,返回第二存储集合中对应的value值;
如果获取的待查询缓存对象任意一个第一类型key值,根据待查询缓存对象的第一类型key值,遍历第一存储集合,在第一存储集合中确定对应的第二类型key值,根据确定的第二类型key值遍历第二存储集合,返回第二存储集合中对应的value值。
具体地,情况1:已知id(第二类型key值),获取value:
valueMap.contains(id)=true(包含该key)
valueMap.get(id)=value
返回获取的value。
情况2:已知ip(第一类型key值),获取value
valueMap(第二存储集合).contains(ip)=false(不包含该key)
keyMap(第一存储集合).contains(ip)=true(包含该key)
keyMap.get(ip)=id;
valueMap.get(id)=value
返回获取的value。
情况3:已知model(型号)查询value
ValueMap.contains(model)=false(不包含该key);
keyMap.contains(model)=false(不包含该key);
返回获取不到value。
进一步地,如图6所示,本发明技术方案还提供了一种多服务多key值的缓存同步方法,还包括:
S6,获取待删除缓存对象的第二类型key值或任意一个第一类型key值;
S7,根据获取的待删除缓存对象的第二类型key值或任意一个第一类型key值,分别删除第二存储集合中对应的value值、第二类型key值以及第一存储集合中对应的第二类型key值、所有第一类型key值。
其中,在步骤S7中,根据获取的待删除缓存对象的第二类型key值或任意一个第一类型key值,分别删除第二存储集合中对应的value值、第二类型key值以及第一存储集合中对应的第二类型key值、所有第一类型key值具体包括:
如果获取的待删除缓存对象第二类型key值,根据待删除缓存对象第二类型key值遍历第二存储集合,分别删除第二存储集合中对应的value值、第二类型key值,根据待删除缓存对象第二类型key值遍历第一存储集合,分别删除第一存储集合中对应的第二类型key值、所有第一类型key值;
如果获取的待删除缓存对象任意一个第一类型key值,根据待查询缓存对象的第一类型key值,遍历第一存储集合,分别删除第一存储集合中对应的第二类型key值、所有第一类型key值;根据第一类型key值确定的第二类型key值,根据确定的第二类型key值遍历第二存储集合,分别删除第二存储集合中对应的value值、第二类型key值。
删除时,举例说明,情况1:根据id(第二类型key值)删除:
valueMap.contains(ip)=true(包含该key);
valueMap.delete(id)
keyMap获取所有的键值对entrySet
entrySet.getValue()=id则entrySet.getKey=serial,ip,vendor
keyMap.delete(serial);
keyMap.delete(ip);
keyMap.delete(vendor);
情况2:根据ip(第一类型key值)删除
valueMap.contains(ip)=false(不包含该key);
keyMap.contains(ip)=true(包含该key)
keyMap.get(ip)=id;
keyMap获取所有的键值对entrySet
entrySet.getValue()=id则entrySet.getKey=serial,ip,vendor
keyMap.delete(serial);
keyMap.delete(ip);
keyMap.delete(vendor);
valueMap.delete(id);
情况3:根据model(型号)删除
valueMap.contains(model)=false(不包含该key);
keyMap.contains(model)=false(不包含该key);
返回不用删除。
本发明基于在每项服务中均创建一个缓存块,每个缓存块均包括第一存储集合以及第二存储集合,获取待缓存对象的第二类型key值、value值、所有第一类型key值,将待缓存对象的所有第一类型key值以及第二类型key值存储至某一缓存块中的第一存储集合,将待缓存对象的value值存储至与第一存储集合同一缓存块中的第二存储集合;实时监控每项服务中的缓存块,当任意一个缓存块更新后,通知其他服务同步更新缓存块中的缓存对象数据,有效解决由于现有技术造成无法实现根据多key进行缓存数据存储,也无法实现多个服务中缓存同步更新的情况的问题,不仅实现了根据多key进行缓存数据存储,而且实现多个服务中缓存同步更新。
本发明技术方案中所述缓存对象的第一类型key值包括用于根据描述缓存对象的value值第一属性的对象标识符,用于根据描述缓存对象的value值第二属性的IP地址,用于根据描述缓存对象的value值第三属性的对象类型,不仅实现了根据多key进行缓存数据存储,而且还可以根据多key进行缓存数据检索、删除或修改等,提高了多服务多key值的缓存同步的适用性。
本发明技术方案中在每项服务中分别建立监控模块以及调用模块;通过每项服务中的监控模块实时监控对应服务中的缓存块;当任意一个缓存块更新后,通过对应服务中调用模块通知其他服务同步更新缓存块中的缓存对象数据,实现了多服务中缓存数据的同步。
实施例二
如图7所示,本发明技术方案还提供了一种多服务多key值的缓存同步装置,包括:
缓存块创建模块101,在每项服务中均创建一个缓存块,每个缓存块均包括第一存储集合以及第二存储集合,所述第一存储集合用于存储缓存块中缓存对象的多个第一类型key值与第二类型key值的对应关系,所述第二存储集合用于存储缓存块中缓存对象的第二类型key值与value值的对应关系;
缓存块存储模块102,获取待缓存对象的第二类型key值、value值、所有第一类型key值,将待缓存对象的所有第一类型key值以及第二类型key值存储至某一缓存块中的第一存储集合,将待缓存对象的value值存储至与第一存储集合同一缓存块中的第二存储集合;
缓存块更新模块103,实时监控每项服务中的缓存块,当任意一个缓存块更新后,通知其他服务同步更新缓存块中的缓存对象数据。
本发明基于在每项服务中均创建一个缓存块,每个缓存块均包括第一存储集合以及第二存储集合,获取待缓存对象的第二类型key值、value值、所有第一类型key值,将待缓存对象的所有第一类型key值以及第二类型key值存储至某一缓存块中的第一存储集合,将待缓存对象的value值存储至与第一存储集合同一缓存块中的第二存储集合;实时监控每项服务中的缓存块,当任意一个缓存块更新后,通知其他服务同步更新缓存块中的缓存对象数据,有效解决由于现有技术造成无法实现根据多key进行缓存数据存储,也无法实现多个服务中缓存同步更新的情况的问题,不仅实现了根据多key进行缓存数据存储,而且实现多个服务中缓存同步更新。
本发明技术方案中所述缓存对象的第一类型key值包括用于根据描述缓存对象的value值第一属性的对象标识符,用于根据描述缓存对象的value值第二属性的IP地址,用于根据描述缓存对象的value值第三属性的对象类型,不仅实现了根据多key进行缓存数据存储,而且还可以根据多key进行缓存数据检索、删除或修改等,提高了多服务多key值的缓存同步的适用性。
本发明技术方案中在每项服务中分别建立监控模块以及调用模块;通过每项服务中的监控模块实时监控对应服务中的缓存块;当任意一个缓存块更新后,通过对应服务中调用模块通知其他服务同步更新缓存块中的缓存对象数据,实现了多服务中缓存数据的同步。
实施例三
如图8所示,本发明技术方案还提供了一种多服务多key值的缓存同步系统,包括:数据库201以及多个服务组件202,每个服务组件202均包括缓存块创建模块101,用于在每项服务组件202中均创建一个缓存块,每个缓存块均包括第一存储集合以及第二存储集合,第一存储集合用于存储缓存块中缓存对象的多个第一类型key值与第二类型key值的对应关系,第二存储集合用于存储缓存块中缓存对象的第二类型key值与value值的对应关系;每个服务组件202中的缓存块用于与数据库201通信,进行缓存对象的存储、查询、删除;
缓存块存储模块102,用于通过数据库201获取待缓存对象的第二类型key值、value值、所有第一类型key值,将待缓存对象的所有第一类型key值以及第二类型key值存储至某一缓存块中的第一存储集合,将待缓存对象的value值存储至与第一存储集合同一缓存块中的第二存储集合;
缓存块更新模块103,用于实时监控对应服务组件202中的缓存块,当任意一个缓存块更新后,通知其他服务组件202同步更新缓存块中的缓存对象数据。
每个服务组件202都有自己缓存块,但是共用一个数据库201,每个服务组件202都能操作数据库,但是只能操作自己的缓存块,因此通过调用模块通知其他服务组件202需要更新各自的缓存,然后各个服务组件202更新自己的缓存。
其中,数据库可以为DB(database,是依照某种数据模型组织起来并存放二级存储器中的数据集合)数据库,也可以为其他类型数据库,本发明在此不做限制。
本发明基于在每项服务中均创建一个缓存块,每个缓存块均包括第一存储集合以及第二存储集合,获取待缓存对象的第二类型key值、value值、所有第一类型key值,将待缓存对象的所有第一类型key值以及第二类型key值存储至某一缓存块中的第一存储集合,将待缓存对象的value值存储至与第一存储集合同一缓存块中的第二存储集合;实时监控每项服务中的缓存块,当任意一个缓存块更新后,通知其他服务同步更新缓存块中的缓存对象数据,有效解决由于现有技术造成无法实现根据多key进行缓存数据存储,也无法实现多个服务中缓存同步更新的情况的问题,不仅实现了根据多key进行缓存数据存储,而且实现多个服务中缓存同步更新。
本发明技术方案中所述缓存对象的第一类型key值包括用于根据描述缓存对象的value值第一属性的对象标识符,用于根据描述缓存对象的value值第二属性的IP地址,用于根据描述缓存对象的value值第三属性的对象类型,不仅实现了根据多key进行缓存数据存储,而且还可以根据多key进行缓存数据检索、删除或修改等,提高了多服务多key值的缓存同步的适用性。
本发明技术方案中在每项服务中分别建立监控模块以及调用模块;通过每项服务中的监控模块实时监控对应服务中的缓存块;当任意一个缓存块更新后,通过对应服务中调用模块通知其他服务同步更新缓存块中的缓存对象数据,实现了多服务中缓存数据的同步。

Claims (7)

1.一种多服务多key值的缓存同步方法,其特征是,包括:
在每项服务中均创建一个缓存块,每个缓存块均包括第一存储集合以及第二存储集合,所述第一存储集合用于存储缓存块中缓存对象的多个第一类型key值与第二类型key值的对应关系,所述第二存储集合用于存储缓存块中缓存对象的第二类型key值与value值的对应关系;
获取待缓存对象的第二类型key值、value值、所有第一类型key值,将待缓存对象的所有第一类型key值以及第二类型key值存储至某一缓存块中的第一存储集合,将待缓存对象的value值存储至与第一存储集合同一缓存块中的第二存储集合;
实时监控每项服务中的缓存块,当任意一个缓存块更新后,通知其他服务同步更新缓存块中的缓存对象数据;
获取待查询缓存对象的第二类型key值或任意一个第一类型key值;
根据获取的待查询缓存对象的第二类型key值或任意一个第一类型key值,返回第二存储集合中对应的value值;
其中,根据获取的待查询缓存对象的第二类型key值或任意一个第一类型key值,返回第二存储集合中对应的value值具体包括:
如果获取的待查询缓存对象第二类型key值,根据待查询缓存对象第二类型key值遍历第二存储集合,返回第二存储集合中对应的value值;
如果获取的待查询缓存对象任意一个第一类型key值,根据待查询缓存对象的第一类型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值、第二类型key值以及第一存储集合中对应的第二类型key值、所有第一类型key值。
5.根据权利要求4所述的一种多服务多key值的缓存同步方法,其特征是,根据获取的待删除缓存对象的第二类型key值或任意一个第一类型key值,分别删除第二存储集合中对应的value值、第二类型key值以及第一存储集合中对应的第二类型key值、所有第一类型key值具体包括:
如果获取的待删除缓存对象第二类型key值,根据待删除缓存对象第二类型key值遍历第二存储集合,分别删除第二存储集合中对应的value值、第二类型key值,根据待删除缓存对象第二类型key值遍历第一存储集合,分别删除第一存储集合中对应的第二类型key值、所有第一类型key值;
如果获取的待删除缓存对象任意一个第一类型key值,根据待查询缓存对象的第一类型key值,遍历第一存储集合,分别删除第一存储集合中对应的第二类型key值、所有第一类型key值;根据第一类型key值确定的第二类型key值,根据确定的第二类型key值遍历第二存储集合,分别删除第二存储集合中对应的value值、第二类型key值。
6.一种多服务多key值的缓存同步装置,其特征是,包括:
缓存块创建模块,在每项服务中均创建一个缓存块,每个缓存块均包括第一存储集合以及第二存储集合,所述第一存储集合用于存储缓存块中缓存对象的多个第一类型key值与第二类型key值的对应关系,所述第二存储集合用于存储缓存块中缓存对象的第二类型key值与value值的对应关系;
缓存块存储模块,获取待缓存对象的第二类型key值、value值、所有第一类型key值,将待缓存对象的所有第一类型key值以及第二类型key值存储至某一缓存块中的第一存储集合,将待缓存对象的value值存储至与第一存储集合同一缓存块中的第二存储集合;
缓存块更新模块,实时监控每项服务中的缓存块,当任意一个缓存块更新后,通知其他服务同步更新缓存块中的缓存对象数据;获取待查询缓存对象的第二类型key值或任意一个第一类型key值;根据获取的待查询缓存对象的第二类型key值或任意一个第一类型key值,返回第二存储集合中对应的value值;
其中,根据获取的待查询缓存对象的第二类型key值或任意一个第一类型key值,返回第二存储集合中对应的value值具体包括:
如果获取的待查询缓存对象第二类型key值,根据待查询缓存对象第二类型key值遍历第二存储集合,返回第二存储集合中对应的value值;
如果获取的待查询缓存对象任意一个第一类型key值,根据待查询缓存对象的第一类型key值,遍历第一存储集合,在第一存储集合中确定对应的第二类型key值,根据确定的第二类型key值遍历第二存储集合,返回第二存储集合中对应的value值;
实时监控每项服务中的缓存块,当任意一个缓存块更新后,通知其他服务同步更新缓存块中的缓存对象数据具体包括:
在每项服务中分别建立监控模块以及调用模块;
通过每项服务中的监控模块实时监控对应服务中的缓存块;
当任意一个缓存块更新后,通过对应服务中调用模块通知其他服务同步更新缓存块中的缓存对象数据。
7.一种多服务多key值的缓存同步系统,其特征是,包括:数据库以及多个服务组件,每个服务组件均包括缓存块创建模块,用于在每项服务中均创建一个缓存块,每个缓存块均包括第一存储集合以及第二存储集合,所述第一存储集合用于存储缓存块中缓存对象的多个第一类型key值与第二类型key值的对应关系,所述第二存储集合用于存储缓存块中缓存对象的第二类型key值与value值的对应关系;每个服务组件中的缓存块用于与数据库通信,进行缓存对象的存储、查询、删除;
缓存块存储模块,用于通过数据库获取待缓存对象的第二类型key值、value值、所有第一类型key值,将待缓存对象的所有第一类型key值以及第二类型key值存储至某一缓存块中的第一存储集合,将待缓存对象的value值存储至与第一存储集合同一缓存块中的第二存储集合;
缓存块更新模块,用于实时监控对应服务组件中的缓存块,当任意一个缓存块更新后,通知其他服务组件同步更新缓存块中的缓存对象数据;获取待查询缓存对象的第二类型key值或任意一个第一类型key值;根据获取的待查询缓存对象的第二类型key值或任意一个第一类型key值,返回第二存储集合中对应的value值;
其中,根据获取的待查询缓存对象的第二类型key值或任意一个第一类型key值,返回第二存储集合中对应的value值具体包括:
如果获取的待查询缓存对象第二类型key值,根据待查询缓存对象第二类型key值遍历第二存储集合,返回第二存储集合中对应的value值;
如果获取的待查询缓存对象任意一个第一类型key值,根据待查询缓存对象的第一类型key值,遍历第一存储集合,在第一存储集合中确定对应的第二类型key值,根据确定的第二类型key值遍历第二存储集合,返回第二存储集合中对应的value值;
实时监控每项服务中的缓存块,当任意一个缓存块更新后,通知其他服务同步更新缓存块中的缓存对象数据具体包括:
在每项服务中分别建立监控模块以及调用模块;
通过每项服务中的监控模块实时监控对应服务中的缓存块;
当任意一个缓存块更新后,通过对应服务中调用模块通知其他服务同步更新缓存块中的缓存对象数据。
CN202210323783.1A 2022-03-30 2022-03-30 一种多服务多key值的缓存同步方法、装置及系统 Active CN114706925B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210323783.1A CN114706925B (zh) 2022-03-30 2022-03-30 一种多服务多key值的缓存同步方法、装置及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210323783.1A CN114706925B (zh) 2022-03-30 2022-03-30 一种多服务多key值的缓存同步方法、装置及系统

Publications (2)

Publication Number Publication Date
CN114706925A CN114706925A (zh) 2022-07-05
CN114706925B true CN114706925B (zh) 2024-02-02

Family

ID=82170533

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210323783.1A Active CN114706925B (zh) 2022-03-30 2022-03-30 一种多服务多key值的缓存同步方法、装置及系统

Country Status (1)

Country Link
CN (1) CN114706925B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106844529A (zh) * 2016-12-29 2017-06-13 金蝶软件(中国)有限公司 缓存数据更新方法、装置和系统
CN107547632A (zh) * 2017-07-25 2018-01-05 广州爱九游信息技术有限公司 缓存数据同步方法、设备、服务中心及多中心服务系统
CN108052656A (zh) * 2017-12-28 2018-05-18 迈普通信技术股份有限公司 一种数据缓存控制方法及设备
CN109254981A (zh) * 2018-08-27 2019-01-22 阿里巴巴集团控股有限公司 一种分布式缓存系统的数据管理方法和装置
CN111611225A (zh) * 2020-05-15 2020-09-01 腾讯科技(深圳)有限公司 数据存储管理方法、查询方法、装置、电子设备及介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106844529A (zh) * 2016-12-29 2017-06-13 金蝶软件(中国)有限公司 缓存数据更新方法、装置和系统
CN107547632A (zh) * 2017-07-25 2018-01-05 广州爱九游信息技术有限公司 缓存数据同步方法、设备、服务中心及多中心服务系统
CN108052656A (zh) * 2017-12-28 2018-05-18 迈普通信技术股份有限公司 一种数据缓存控制方法及设备
CN109254981A (zh) * 2018-08-27 2019-01-22 阿里巴巴集团控股有限公司 一种分布式缓存系统的数据管理方法和装置
CN111611225A (zh) * 2020-05-15 2020-09-01 腾讯科技(深圳)有限公司 数据存储管理方法、查询方法、装置、电子设备及介质

Also Published As

Publication number Publication date
CN114706925A (zh) 2022-07-05

Similar Documents

Publication Publication Date Title
EP2434758B1 (en) Distributed node video monitoring system and management method thereof
CN106648903B (zh) 调用分布式文件系统的方法和装置
CN112087333A (zh) 一种微服务注册中心集群及其信息处理方法
US20070124437A1 (en) Method and system for real-time collection of log data from distributed network components
CN104050276B (zh) 一种分布式数据库的缓存处理方法及系统
KR20080068110A (ko) 데이터 동기화 처리 방법 그리고 클라이언트 단말기, 서버및 그것의 데이터 동기화 시스템
US9002787B2 (en) Method and apparatus for tracking device management data changes
CN109547524B (zh) 基于物联网的用户行为存储方法、装置、设备及存储介质
CN113973129B (zh) 一种支持多种注册中心微服务的网关
CN108076081B (zh) 一种业务数据的同步方法、装置和系统
CN113094430B (zh) 一种数据处理方法、装置、设备以及存储介质
CN105208058A (zh) 基于web会话共享的信息交互系统
CN114448686B (zh) 一种基于微服务的跨网络通信装置与方法
CN113726662B (zh) 一种微服务路由及管理系统
CN113703917B (zh) 一种多集群资源数据处理系统与方法、非暂态存储介质
CN112328632B (zh) 一种分布式两级缓存的方法和系统
CN114706925B (zh) 一种多服务多key值的缓存同步方法、装置及系统
CN111241189A (zh) 一种同步数据的方法和装置
CN107180034A (zh) MySQL数据库的集群系统
CN111708775A (zh) 自增id生成方法、装置及系统
CN116260878A (zh) 一款基于分布式计算、存储的全域业务结构服务化的业务中台系统
CN115629909A (zh) 业务数据处理的方法、装置、电子设备和存储介质
CN113612811B (zh) 一种在多通道中客户端挂载的方法、系统、设备及介质
CN115189931A (zh) 一种分布式密钥管理方法、装置、设备、存储介质
CN113973135A (zh) 数据缓存处理方法、装置、缓存网格平台和存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant