CN111767314A - 数据缓存及查询方法、装置、懒缓存系统及存储介质 - Google Patents
数据缓存及查询方法、装置、懒缓存系统及存储介质 Download PDFInfo
- Publication number
- CN111767314A CN111767314A CN202010607521.9A CN202010607521A CN111767314A CN 111767314 A CN111767314 A CN 111767314A CN 202010607521 A CN202010607521 A CN 202010607521A CN 111767314 A CN111767314 A CN 111767314A
- Authority
- CN
- China
- Prior art keywords
- cache
- data
- query
- target
- instance
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据缓存及查询方法、装置、懒缓存系统及存储介质,包括:监控数据库中的数据更新信息,同步更新缓存区中对应的缓存实例;获取缓存实例的查询方法并构建查询索引;当接收到数据查询请求时,获取对应的目标查询索引,由懒缓存组件基于目标查询索引查询缓存区是否存在目标缓存实例;若存在,则将目标缓存实例返回至对应的数据查询发起方;若不存在,则通过执行机从数据库中查找对应的目标数据。基于数据处理,通过懒缓存系统控制缓存数据,在数据库更新后同步更新缓存数据,并通过懒缓存组件和执行机查询目标缓存数据,降低了数据缓存的技术门槛,提高了缓存数据的同步性和一致性,并实现了数据的自动分层查询和条件查询。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种数据缓存及查询方法、装置、懒缓存系统及存储介质。
背景技术
当前有各种各样的数据缓存工具,但都面临新增缓存数据的实现方式复杂、难度大对技术人员的能力要求高。并且当数据库更新后无法同步更新缓存,使得缓存数据与更新后的数据不一致。
当前的数据缓存工具大多不支持条件查询,即使能实现也需要进行大量的代码改造,若缺乏统一的规范也容易导致键值冲突、同步异常和查询结果的不一致等问题。
发明内容
本发明提供一种数据缓存及查询方法、装置、懒缓存系统及存储介质,旨在降低数据缓存的技术门槛,提高缓存数据的同步性和一致性,并实现数据的自动分层查询和条件查询。
为实现上述目的,本发明提供一种数据缓存及查询方法,应用于懒缓存系统,所述懒缓存系统包括监控中心、缓存区、懒缓存组件、执行机和数据库,该方法包括:
通过所述监控中心监控所述数据库中的数据更新信息,基于所述数据更新信息同步更新所述缓存区中对应的缓存实例;
获取各个缓存实例的若干个查询方法,基于所述若干个查询方法构建查询索引;
当接收到数据查询请求时,获取所述数据查询请求的目标查询索引,由所述懒缓存组件基于所述目标查询索引查询所述缓存区是否存在目标缓存实例;
若所述缓存区存在目标缓存实例,则将所述目标缓存实例返回至对应的数据查询发起方;
若所述缓存区不存在目标缓存实例,则通过所述执行机从所述数据库中查找对应的目标数据。
优选地,所述查询索引包括一级索引和二级索引;
所述获取各个缓存实例的若干个查询方法,基于所述若干个查询方法构建查询索引的步骤包括:
获取各个缓存实例的若干个查询方法,基于所述若干个查询方法分别构建各个所述缓存实例的若干个一级索引,所述一级索引的键值由系统标识和所述查询方法的哈希值组合而成;
基于类名、方法名以及参数将同一个缓存实例的所述若干个一级索引序列化生成一个固定键,将所述固定键标记为对应缓存实例的二级索引。
优选地,所述通过所述执行机从所述数据库中查找对应的目标数据的步骤之后还包括:
将所述目标数据返回至所述缓存区,将所述目标数据标记为新增缓存实例,并构建所述新增缓存实例的查询索引。
优选地,所述当接收到数据查询请求时,获取所述数据查询请求的目标查询索引的步骤之后还包括:
启动懒缓存系统的异常探针,由所述异常探针捕获异常状态;
若捕获到异常状态则启动对应的处理策略。
优选地,所述通过所述监控中心监控所述数据库中的数据更新信息,基于所述数据更新信息同步更新所述缓存区中对应的缓存实例的步骤包括:
当通过所述监控中心监控到所述数据库中的数据更新信息时,基于所述数据更新信息获取更新前的初始数据;
基于所述初始数据与所述缓存区的缓存实例进行对比,判断所述缓存区中是否包含所述初始数据中的一个或多个;
若所述缓存区中包含所述初始数据的一个或多个,则将所述缓存区中包含的与所述初始数据对应的缓存实例标记为待更新缓存实例,并将所述待更新缓存实例更新为与所述初始数据对应的最终数据。
优选地,所述将所述目标缓存实例返回至对应的数据查询发起方的步骤之后还包括:
统计预设时间段内各个所述缓存实例的被查询次数,基于所述被查询次数计算各个所述缓存实例的活跃度;
基于所述活跃度将各个所述缓存实例进行分区存储,和/或将活跃度小于活跃度阈值的缓存实例从所述缓存区中清除。
优选地,所述通过所述监控中心监控所述数据库中的数据更新信息,基于所述数据更新信息同步更新所述缓存区中对应的缓存实例的步骤之前还包括:
基于对象关系映射框架构建所述懒缓存系统,所述懒缓存系统包括监控中心、缓存区、懒缓存组件、执行机和数据库。
此外,为实现上述目的,本发明还提供一种数据缓存及查询装置,所述装置包括:
更新模块,用于通过所述监控中心监控所述数据库中的数据更新信息,基于所述数据更新信息同步更新所述缓存区中对应的缓存实例;
构建模块,用于获取各个缓存实例的若干个查询方法,基于所述若干个查询方法构建查询索引;
查询模块,用于当接收到数据查询请求时,获取所述数据查询请求的目标查询索引,由所述懒缓存组件基于所述目标查询索引查询所述缓存区是否存在目标缓存实例;
返回模块,用于若所述缓存区存在目标缓存实例,则将所述目标缓存实例返回至对应的数据查询发起方;
查找模块,用于若所述缓存区不存在目标缓存实例,则通过所述执行机从所述数据库中查找对应的目标数据。
此外,为实现上述目的,本发明还提供一种懒缓存系统,所述懒缓存系统包括监控中心、缓存区、懒缓存组件、执行机和数据库、处理器,存储器以及存储在所述存储器中的数据缓存及查询程序,所述数据缓存及查询程序被所述处理器运行时,实现如上所述的数据缓存及查询方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机存储介质,所述计算机存储介质上存储有数据缓存及查询程序,所述数据缓存及查询程序被处理器运行时实现如上所述数据缓存及查询方法的步骤。
相比现有技术,本发明公开了一种数据缓存及查询方法、装置、懒缓存系统及存储介质,所述懒缓存系统包括监控中心、数据库、缓存区、执行机、懒缓存组件,该方法包括:通过所述监控中心监控所述数据库中的数据更新信息,基于所述数据更新信息同步更新所述缓存区中对应的缓存实例;获取各个缓存实例的若干个查询方法,基于所述若干个查询方法构建查询索引;当接收到数据查询请求时,获取所述数据查询请求的目标查询索引,由所述懒缓存组件基于所述目标查询索引查询所述缓存区是否存在目标缓存实例;若所述缓存区存在目标缓存实例,则将所述目标缓存实例返回至对应的数据查询发起方;若所述缓存区不存在目标缓存实例,则通过所述执行机从所述数据库中查找对应的目标数据。由此,基于数据处理,基于缓存系统新增、存储和管理缓存数据,在数据库更新后同步更新缓存数据,并在接收到数据查询请求后,根据目标数据所在位置由懒缓存组件和执行机分别查找目标缓存数据,如此,降低了数据缓存的技术门槛,提高了缓存数据的同步性和一致性,并实现了数据的自动分层查询和条件查询。
附图说明
图1是本发明各实施例涉及的懒缓存系统的硬件结构示意图;
图2是本发明数据缓存及查询方法第一实施例的流程示意图;
图3是本发明数据缓存及查询方法涉及的懒缓存系统的组成示意图;
图4是本发明数据缓存及查询装置第一实施例的功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例主要涉及的懒缓存系统是指能够实现网络连接的网络连接设备,所述懒缓存系统可以是服务器、云平台等。
参照图1,图1是本发明各实施例涉及的懒缓存系统的硬件结构示意图。本发明实施例中,懒缓存系统可以包括处理器1001(例如中央处理器Central Processing Unit、CPU),通信总线1002,输入端口1003,输出端口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信;输入端口1003用于数据输入;输出端口1004用于数据输出,存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器,存储器1005可选的还可以是独立于前述处理器1001的存储装置。本领域技术人员可以理解,图1中示出的硬件结构并不构成对本发明的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
继续参照图1,图1中作为一种可读存储介质的存储器1005可以包括操作系统、网络通信模块、应用程序模块以及数据缓存及查询程序。在图1中,网络通信模块主要用于连接服务器,与服务器进行数据通信;而处理器1001用于调用存储器1005中存储的数据缓存及查询程序,并执行数据缓存及查询方法的相关步骤。
基于所述懒缓存系统的硬件结构,提出本发明第一实施例。
参照图2,图2是本发明数据缓存及查询方法第一实施例的流程示意图。
本实施例提出一种数据缓存及查询方法,应用于懒缓存系统,所述懒缓存系统包括监控中心、数据库、缓存区、执行机、懒缓存组件,该方法包括:
步骤S101:通过所述监控中心监控所述数据库中的数据更新信息,基于所述数据更新信息同步更新所述缓存区中对应的缓存实例;
一般地,当数据库中存储的数据发生更新时会存储相关的数据更新信息,所述数据更新信息包括更新时间、操作员、更新权限、数据名称、数据标签、方法名、更新前的原始数据、更新后的最终数据等。当发生更新后,通过广播或接口向所述懒缓存系统中的相关组件发送数据更新信息。所述监控中心是所述懒缓存系统的组件之一,用于监控所述懒缓存系统中其它组件的活动。
具体地,所述步骤S101包括:
步骤S101a:当通过所述监控中心监控到所述数据库中的数据更新信息时,基于所述数据更新信息获取更新前的初始数据;
当通过监控中心监控到所述数据库中的数据更新信息时,通过所述数据更新信息获取更新前的初始数据。
步骤S101b:基于所述初始数据与所述缓存区的缓存实例进行对比,判断所述缓存区是否包含所述初始数据中的一个或多个;
扫描所述缓存区,查看所述缓存区是否存在与所述初始数据一致的缓存实例,若所述缓存区存在与所述初始数据一致的缓存实例,则判定所述缓存区包含所述初始数据中的一个或多个,包含的初始数据的个数根据实际情况确定。
步骤S101c:若所述缓存区中是否包含所述初始数据中的一个或多个,则将所述缓存区中包含的与所述初始数据对应的缓存实例标记为待更新缓存实例,并将所述待更新缓存实例更新为与所述初始数据对应的最终数据。
若所述缓存区中包含所述初始数据中的一个或多个,则将所述缓存区中包含的与所述初始数据对应的缓存实例标记为待更新缓存实例。并进一步获取与所述初始数据对应的更新后的最终数据,并将所述待更新缓存实例同步更新为与所述初始数据对应的最终数据。如此,所述数据缓存区中保存的缓存实例与所述数据库中的数据同步且一致。本实施例中,所述缓存实例是指存储在所述缓存区的数据。例如,数据库中数据A0、数据B0为更新的前的初始数据,并且被更新,将更新后的数据表示为数据A1、数据B1。如果扫描所述缓存区,发现与所述数据A0对应的缓存实例Aa存在于所述缓存区,则将所述缓存实例Aa标记为待更新缓存实例,并表示为待更新缓存实例Aa,然后将所述缓存实例Aa更新为数据B1。
进一步地,所述步骤S101之前还包括:
基于对象关系映射框架构建所述懒缓存系统,所述懒缓存系统包括缓存区、执行机、数据库、懒缓存组件。
本实施例中,基于对象关系映射(Object Relational Mapping,ORM)框架构建所述懒缓存系统。ORM框架是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。ORM框架能极大地提高技术人员的工作效率。
本实施例中,基于所述ORM框架设计一个前置于所述ORM框架的懒缓存系统,所述懒缓存系统可以通过注解方式支持开箱即用,与业务代码解耦无需二次编程,减少改造旧业务系统的工作量并降低新业务系统的开发门槛。所述懒缓存系统还支持同一套缓存环境下的自动分层查询和条件查询,无需人为约定键(key)的使用规则,即可轻松实现防键值冲突问题。
具体地,参照图3,图3是本发明数据缓存及查询方法涉及的懒缓存系统的组成示意图。所述懒缓存系统包括监控中心、管理后台、缓存区、懒缓存组件、执行机和数据库等组件。其中,所述监控中心用于监控所述懒缓存系统中其它组件的活动;所述管理后台用于管理所述懒缓存系统中各个组件的运行;所述缓存区用于存放缓存实例;所述懒缓存组件用于从所述缓存区中查找所需要的缓存实例,可以包括缓存实例1、缓存实例2、缓存实例n等众多缓存实例;所述执行机用于从数据库中查找相关数据;所述数据库用于存储数据。此外,所述懒缓存系统还与多个查询请求发起方进行数据传输,所述查询请求发起方的个数不受限制,例如包括查询请求发起方1、查询请求发起方2、查询请求发起方n。
步骤S102:获取各个缓存实例的若干个查询方法,基于所述若干个查询方法构建查询索引;
在数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。
一般的数据库都会设置索引以供快速准确地查询到所需要的数据。当前有众多设置索引的方法。本实施例中,为了提高数据查询的准确性并缩短数据查询时间,提高数据查询效率,设置多级查询索引。所述查询索引包括一级索引和二级索引,其中,所述一级索引基于所述缓存实例可能的查询方法设置,可以用索引键(indexkey)表示;所述二级索引基于所述一级索引序列化后生成,可以用固定键(persistentkey)表示。
具体地,所述获取各个缓存实例的若干个查询方法,基于所述若干个查询方法构建查询索引的步骤包括:
步骤S102a:获取各个缓存实例的若干个查询方法,基于所述若干个查询方法分别构建各个所述缓存实例的若干个一级索引,所述一级索引的键值由系统标识和所述查询方法的哈希值组合而成;
本实施例中,自动扫描所有的数据访问层中未显示注明无需缓存的包括缓存实例的查询方法,以获取所述查询方法。例如,若所述缓存实例为货物信息,则所述查询方法可以包括供应商、货物表示、货物名称、生产信息、产地中的一种或多种的组合;若所述缓存实例为学生信息,则所述查询方法可以包括姓名、性别、年龄、学号、班级、学校中的一种或多种的组合。可以理解地,所述一级索引还包括其它自定义查询条件,所述自定义查询条件可以是关键字、数据属性等。
本实施例中,用索引键indexkey表示所述一级索引,索引键值(indexkey value)由系统标识与所述查询犯法的哈希值组合而成,其中,所述系统标识是指缓存实例的系统标识,所述系统标识在部署环境全局唯一,例如所述系统标识可以是ID(Identitydocument,身份标识),系统标识可以保证多系统调用不同的缓存实例时相互不冲突。所述哈希值可以保证懒缓存系统内多方法调用时不冲突。所述哈希(hash)值是由所述懒缓存系统对所述缓存实例进行哈希运算,为每一个缓存实例映射唯一的hash值。通过哈希算法进行哈希运算,哈希算法,即散列函数。哈希算法一种单向密码体制,是从明文到密文的不可逆映射,只有加密过程,没有解密过程。同时,哈希算法可以将任意长度的输入经过变化以后得到固定长度的输出。哈希算法的这种单向特征和输出数据长度固定的特征使得它可以生成消息或者数据。本方案实施例可以通过MD4,MD5,SHA-1等哈希算法对所述缓存实例的查询方法进行哈希运算,获得对应的哈希值。
步骤S102b:基于类名、方法名以及参数将同一个缓存实例的所述若干个一级索引序列化生成一个固定键,将所述固定键标记为对应缓存实例的二级索引。
序列化是指把对象转换成有序字节流,以便将缓存实例传输或者保存在本地。序列化后的有序字节流保存了对象的状态以及相关的描述信息。当查询发起方从所述懒缓存系统中获得序列化后的有序字节流后,根据所述有序字节流中所保存的对象状态及描述信息,通过反序列化重建对象,获得缓存实例。序列化的本质就是把实体对象状态按照一定的格式写入到有序字节流,反序列化就是从有序字节流重建对象(缓存实例),恢复对象状态。序列化机制的核心作用就是对象状态的保存与重建。
本实施例中,对每个查询方法按照“类名+方法名+参数”做序列化生成唯一的固定键persistentkey,将所述固定键persistentkey标注为二级索引。由此,根据业务系统和业务表生成的persistentkey是数据库中是对应缓存实例实例的唯一索引。本实施例中,所述类名包括cn.,com.,paic.,system.,class等。并且所述参数可以是方法签名,方法签名全局唯一。
步骤S103:当接收到数据查询请求时,获取所述数据查询请求的目标查询索引,由所述懒缓存组件基于所述目标查询索引查询所述缓存区是否存在目标缓存实例;其中,所述目标查询索引包括目标一级索引和目标二级索引。
具体地,解析所述数据查询请求中的查询关键字,基于所述查询关键字确定查询方法,再获得与该查询方法对应的目标一级索引;根据预先构建的二级索引,获取与所述目标一级索引对应的目标二级索引,然后通过所述懒缓存组件基于所述目标二级索引查看所述缓存区中是否存在对应的目标缓存实例,所述懒缓存组件将所述目标二级索引与各个缓存实例的二级索引进行对比,若某个缓存实例的二级索引与所述目标二级索引一致,则将该缓存实例标记为目标缓存实例,并判定所述缓存区中存在与所述目标二级索引对应的目标缓存实例。反之,若不存在某个缓存实例的二级索引与所述目标二级索引一致,则判定所述缓存区中不存在与所述目标二级索引对应的目标缓存实例。
进一步地,接收到数据查询请求后,首先将所述查询请求与所述查询方法进行对比,根据对比结果判断所述查询请求是否符合要求:若所述查询请求包括的一个或多个关键字与所述查询方法中的某个查询方法中的关键字相符,则判定所述查询请求符合要求,若所述查询请求符合要求则执行步骤:获取所述数据查询请求的目标查询索引。反之,则判定所述查询请求不符合要求,并忽略所述查询请求。
进一步地,所述当接收到数据查询请求时,获取所述数据查询请求的目标查询索引的步骤之后还包括:
启动懒缓存系统的异常探针,由所述异常探针捕获异常状态;若捕获到异常状态则启动对应的处理策略。
本实施例中,预先在所述懒缓存系统中构建异常探针,所述异常探针可以统一处理缓存异常时的异常捕获,并根据异常状态启动对应的处理策略,其中所述处理策略包括自动降级。本实施例中,在懒缓存组件中设置局部异常探针和全局异常探针,针对数据库连接超时等异常进行异常捕获,使异常发生时有替代的降级策略。例如连接超时自动重试连接。所述降级策略,无需在业务层重复编程实现,使得代码质量无需强依赖编码者自身的编程素质,提高所述懒缓存系统使用的安全性。
进一步地,若同时接收到多个查询请求发起方发送的数据查询请求,或者接收到包含预约信息的数据查询请求,则获取所述数据查询请求的个数,基于所述数据查询请求的个数将所述数据查询请求划分为对应个数的查询子请求;判断所述查询子请求的个数是否大于查询个数阈值;若所述查询子请求的个数大于所述查询个数阈值,则先获取与所述查询个数阈值对应个数的子查询请求的子查询方法,并将剩余的查询子请求存储至请求队列中;当至少一个子查询请求处理完毕后,再依次获取所述请求队列中查询子请求中的子查询方法,直至所述请求队列为空。例如,若当前有n+m个查询子请求,其中n和m均为大于0的整数,n表示查询个数阈值,则先并行处理n个查询子请求,待一个或多个查询子请求处理完毕后,再接入其它m个查询子请求中的一个或多个。如此,可以降低所述懒缓存系统的工作负荷,缩短缓存实例的导出时间。
步骤S104:若所述缓存区存在目标缓存实例,则将所述目标缓存实例返回至对应的数据查询发起方;
若所述缓存区存在目标缓存实例,则通过预先建立的通讯连接将所述目标缓存实例返回至对应的数据查询发起方。
步骤S105:若所述缓存区不存在目标缓存实例,则通过所述执行机从所述数据库中查找对应的目标数据。
若所述缓存区不存在目标缓存实例,则启动执行机。通过所述执行机解析所述数据查询请求中的查询条件,基于所述查询条件扫描所述数据库,获得对应的目标数据。
再次参考图3,基于所述懒缓存系统的数据查询基本流程如下:1接收查询服务发起方向所述懒缓存系统发送的数据查询请求;2通过所述懒缓存系统接收并处理所述数据查询请求,通过所述懒缓存组件在所述缓存区中自动查询缓存实例;3所述缓存区返回查询结果,所述查询结果为存在目标缓存实例或不存在目标缓存实例;4.1若所述缓存区存在目标缓存实例,则将所述目标缓存实例返回至对应的数据查询发起方;4.2若所述缓存区不存在目标缓存实例,则启动执行机;5所述执行机对数据库发起查询,获得目标数据;6执行机将所述目标数据返回至所述懒缓存组件;7将所述目标数据保存至所述缓存区,并标记为新增缓存实例;8向所述懒缓存组件返回所述新增缓存实例;9将所述新增缓存实例返回至对应的数据查询发起方。如此,实现了数据的自动分层查询和条件查询,可以向所述数据查询发起方返回最新数据。
进一步地,所述步骤S105之后,还包括:
将所述目标数据返回至所述缓存区,将所述目标数据标记为新增缓存实例,并构建所述新增缓存实例的查询索引。
将所述目标数据返回至所述缓存区并保存,将所述目标数据标记为新增缓存实例,并构建所述新增缓存实例的查询索引,所述查询索引包括一级索引和二级索引。构建所述新增缓存实例的查询索引的操作与上述基于查询方法构建查询索引的操作相同,此处不再赘述。
进一步地,所述将所述目标缓存实例返回至对应的数据查询发起方的步骤之后还包括:
统计预设时间段内各个所述缓存实例的被查询次数,基于所述被查询次数计算各个所述缓存实例的活跃度;基于所述活跃度将各个所述缓存实例进行分区存储,和/或将活跃度小于活跃度阈值的缓存实例从所述缓存区中清除。
本实施例中,所述活跃度基于预设时间段内缓存实例被查询的次数计算,若某个缓存实例被查询的次数多,则活跃度高;若被查询的次数少,则活跃度低。所述预设周期可以是一周、两周、30天等。由此,可以节约缓存空间,提高查询效率。例如,将所述缓存区中被查询次数最多的缓存实例的活跃度规定为100%,将所述缓存区中被查询次数为0的缓存实例的活跃度规定为0%,如此计算被查询次数在最多和0之间的各个缓存实例的活跃度。或者,也可以直接将所述被查询次数表示所述活跃度。
基于所述活跃度将各个所述缓存实例进行分区存储。例如按活跃度从高到低分成四个区:缓存区A、缓存区B、缓存区C和缓存区D,依次根据各个缓存实例的被查询次数将各个缓存实例存入对应的缓存区。如此,当接收到数据查询请求后,获得对应的目标二级索引后,可以基于所述目标二级索引,依次从缓存区A、缓存区B、缓存区C和缓存区D进行查询,直到获得对应的缓存实例。如此可以不需要遍历整个缓存区,能缩短查询时间,提高查询效率。
可以理解地,由于活跃度低的缓存实例被查询的次数少,因为为了节约缓存区的空间,并缩小每次查询的时间,可以将活跃度小于活跃度阈值的缓存实例从所述缓存区中清除。
本实施例通过上述方案,通过所述监控中心监控所述数据库中的数据更新信息,基于所述数据更新信息同步更新所述缓存区中对应的缓存实例;获取各个缓存实例的若干个查询方法,基于所述若干个查询方法构建查询索引;当接收到数据查询请求时,获取所述数据查询请求的目标查询索引,由所述懒缓存组件基于所述目标查询索引查询所述缓存区是否存在目标缓存实例;若所述缓存区存在目标缓存实例,则将所述目标缓存实例返回至对应的数据查询发起方;若所述缓存区不存在目标缓存实例,则通过所述执行机从所述数据库中查找对应的目标数据。由此,基于数据处理,基于缓存系统新增、存储和管理缓存数据,在数据库更新后同步更新缓存数据,并在接收到数据查询请求后,根据目标数据所在位置由懒缓存组件和执行机分别查找目标缓存数据,如此,降低了数据缓存的技术门槛,提高了缓存数据的同步性和一致性,并实现了数据的自动分层查询和条件查询。
此外,本发明实施例还提供一种数据缓存及查询装置,具体地,参考图4,图4是本发明数据缓存及查询装置第一实施例的功能模块示意图。
如图4所示,所述装置包括:
更新模块10,用于通过所述监控中心监控所述数据库中的数据更新信息,基于所述数据更新信息同步更新所述缓存区中对应的缓存实例;
构建模块20,用于获取各个缓存实例的若干个查询方法,基于所述若干个查询方法构建查询索引;
查询模块30,用于当接收到数据查询请求时,获取所述数据查询请求的目标查询索引,由所述懒缓存组件基于所述目标查询索引查询所述缓存区是否存在目标缓存实例;
返回模块40,用于若所述缓存区存在目标缓存实例,则将所述目标缓存实例返回至对应的数据查询发起方;
查找模块50,用于若所述缓存区不存在目标缓存实例,则通过所述执行机从所述数据库中查找对应的目标数据。
进一步地,所述构建模块包括:
第一构建单元,用于获取各个缓存实例的若干个查询方法,基于所述若干个查询方法分别构建各个所述缓存实例的若干个一级索引,所述一级索引的键值由系统标识和所述查询方法的哈希值组合而成;
第二构建单元,用于基于类名、方法名以及参数将同一个缓存实例的所述若干个一级索引序列化生成一个固定键,将所述固定键标记为对应缓存实例的二级索引。
进一步地,所述查找模块还包括:
新增单元,用于将所述目标数据返回至所述缓存区,将所述目标数据标记为新增缓存实例,并构建所述新增缓存实例的查询索引。
进一步地,所述查找模块还包括::
第一启动单元,用于启动懒缓存系统的异常探针,由所述异常探针捕获异常状态;
第二启动单元,用于若捕获到异常状态则启动对应的处理策略。
进一步地,所述更新模块包括:
获取单元,用于当通过所述监控中心监控到所述数据库中的数据更新信息时,基于所述数据更新信息获取更新前的初始数据;
判断单元,用于基于所述初始数据与所述缓存区的缓存实例进行对比,判断所述缓存区中是否包含所述初始数据中的一个或多个;
更新单元,用于若所述缓存区中包含所述初始数据的一个或多个,则将所述缓存区中包含的与所述初始数据对应的缓存实例标记为待更新缓存实例,并将所述待更新缓存实例更新为与所述初始数据对应的最终数据。
进一步地,所述返回模块还包括:
统计单元,用于统计预设时间段内各个所述缓存实例的被查询次数,基于所述被查询次数计算各个所述缓存实例的活跃度;
分区单元,用于基于所述活跃度将各个所述缓存实例进行分区存储,和/或将活跃度小于活跃度阈值的缓存实例从所述缓存区中清除。
进一步地,所述更新单元还包括:
第三构建单元,用于基于对象关系映射框架构建所述懒缓存系统,所述懒缓存系统包括监控中心、缓存区、懒缓存组件、执行机和数据库。
此外,本发明实施例还提供一种计算机存储介质,所述计算机存储介质上存储有数据缓存及查询程序,所述数据缓存及查询程序被处理器运行时实现如上权所述数据缓存及查询方法的步骤,此处不再赘述。
相比现有技术,本发明提出的一种数据缓存及查询方法、装置、懒缓存系统及存储介质,所述懒缓存系统包括监控中心、数据库、缓存区、执行机、懒缓存组件,该方法包括:通过所述监控中心监控所述数据库中的数据更新信息,基于所述数据更新信息同步更新所述缓存区中对应的缓存实例;获取各个缓存实例的若干个查询方法,基于所述若干个查询方法构建查询索引;当接收到数据查询请求时,获取所述数据查询请求的目标查询索引,由所述懒缓存组件基于所述目标查询索引查询所述缓存区是否存在目标缓存实例;若所述缓存区存在目标缓存实例,则将所述目标缓存实例返回至对应的数据查询发起方;若所述缓存区不存在目标缓存实例,则通过所述执行机从所述数据库中查找对应的目标数据。由此,基于数据处理,基于缓存系统新增、存储和管理缓存数据,在数据库更新后同步更新缓存数据,并在接收到数据查询请求后,根据目标数据所在位置由懒缓存组件和执行机分别查找目标缓存数据,如此,降低了数据缓存的技术门槛,提高了缓存数据的同步性和一致性,并实现了数据的自动分层查询和条件查询。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备执行本发明各个实施例所述的方法。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种数据缓存及查询方法,其特征在于,应用于懒缓存系统,所述懒缓存系统包括监控中心、缓存区、懒缓存组件、执行机和数据库,该方法包括:
通过所述监控中心监控所述数据库中的数据更新信息,基于所述数据更新信息同步更新所述缓存区中对应的缓存实例;
获取各个缓存实例的若干个查询方法,基于所述若干个查询方法构建查询索引;
当接收到数据查询请求时,获取所述数据查询请求的目标查询索引,由所述懒缓存组件基于所述目标查询索引查询所述缓存区是否存在目标缓存实例;
若所述缓存区存在目标缓存实例,则将所述目标缓存实例返回至对应的数据查询发起方;
若所述缓存区不存在目标缓存实例,则通过所述执行机从所述数据库中查找对应的目标数据。
2.根据权利要求1所述的方法,其特征在于,所述查询索引包括一级索引和二级索引;
所述获取各个缓存实例的若干个查询方法,基于所述若干个查询方法构建查询索引的步骤包括:
获取各个缓存实例的若干个查询方法,基于所述若干个查询方法分别构建各个所述缓存实例的若干个一级索引,所述一级索引的键值由系统标识和所述查询方法的哈希值组合而成;
基于类名、方法名以及参数将同一个缓存实例的所述若干个一级索引序列化生成一个固定键,将所述固定键标记为对应缓存实例的二级索引。
3.根据权利要求1所述的方法,其特征在于,所述通过所述执行机从所述数据库中查找对应的目标数据的步骤之后还包括:
将所述目标数据返回至所述缓存区,将所述目标数据标记为新增缓存实例,并构建所述新增缓存实例的查询索引。
4.根据权利要求1所述的方法,其特征在于,所述当接收到数据查询请求时,获取所述数据查询请求的目标查询索引的步骤之后还包括:
启动懒缓存系统的异常探针,由所述异常探针捕获异常状态;
若捕获到异常状态则启动对应的处理策略。
5.根据权利要求1所述的方法,其特征在于,所述通过所述监控中心监控所述数据库中的数据更新信息,基于所述数据更新信息同步更新所述缓存区中对应的缓存实例的步骤包括:
当通过所述监控中心监控到所述数据库中的数据更新信息时,基于所述数据更新信息获取更新前的初始数据;
基于所述初始数据与所述缓存区的缓存实例进行对比,判断所述缓存区中是否包含所述初始数据中的一个或多个;
若所述缓存区中包含所述初始数据的一个或多个,则将所述缓存区中包含的与所述初始数据对应的缓存实例标记为待更新缓存实例,并将所述待更新缓存实例更新为与所述初始数据对应的最终数据。
6.根据权利要求1所述的方法,其特征在于,所述将所述目标缓存实例返回至对应的数据查询发起方的步骤之后还包括:
统计预设时间段内各个所述缓存实例的被查询次数,基于所述被查询次数计算各个所述缓存实例的活跃度;
基于所述活跃度将各个所述缓存实例进行分区存储,和/或将活跃度小于活跃度阈值的缓存实例从所述缓存区中清除。
7.根据权利要求1-6中任一项所述的方法,其特征在于,所述通过所述监控中心监控所述数据库中的数据更新信息,基于所述数据更新信息同步更新所述缓存区中对应的缓存实例的步骤之前还包括:
基于对象关系映射框架构建所述懒缓存系统,所述懒缓存系统包括监控中心、缓存区、懒缓存组件、执行机和数据库。
8.一种数据缓存及查询装置,其特征在于,所述装置包括:
更新模块,用于通过所述监控中心监控所述数据库中的数据更新信息,基于所述数据更新信息同步更新所述缓存区中对应的缓存实例;
构建模块,用于获取各个缓存实例的若干个查询方法,基于所述若干个查询方法构建查询索引;
查询模块,用于当接收到数据查询请求时,获取所述数据查询请求的目标查询索引,由所述懒缓存组件基于所述目标查询索引查询所述缓存区是否存在目标缓存实例;
返回模块,用于若所述缓存区存在目标缓存实例,则将所述目标缓存实例返回至对应的数据查询发起方;
查找模块,用于若所述缓存区不存在目标缓存实例,则通过所述执行机从所述数据库中查找对应的目标数据。
9.一种懒缓存系统,其特征在于,所述懒缓存系统包括监控中心、缓存区、懒缓存组件、执行机和数据库、处理器,存储器以及存储在所述存储器中的数据缓存及查询程序,所述数据缓存及查询程序被所述处理器运行时,实现如权利要求1-7中任一项所述的数据缓存及查询方法的步骤。
10.一种计算机存储介质,其特征在于,所述计算机存储介质上存储有数据缓存及查询程序,所述数据缓存及查询程序被处理器运行时实现如权利要求1-7中任一项所述数据缓存及查询方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010607521.9A CN111767314A (zh) | 2020-06-29 | 2020-06-29 | 数据缓存及查询方法、装置、懒缓存系统及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010607521.9A CN111767314A (zh) | 2020-06-29 | 2020-06-29 | 数据缓存及查询方法、装置、懒缓存系统及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111767314A true CN111767314A (zh) | 2020-10-13 |
Family
ID=72723209
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010607521.9A Pending CN111767314A (zh) | 2020-06-29 | 2020-06-29 | 数据缓存及查询方法、装置、懒缓存系统及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111767314A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112632129A (zh) * | 2020-12-31 | 2021-04-09 | 联想未来通信科技(重庆)有限公司 | 一种码流数据管理方法、装置及存储介质 |
CN114490748A (zh) * | 2021-12-27 | 2022-05-13 | 北京吉威数源信息技术有限公司 | 矢量数据统计信息查询方法、装置、设备及存储介质 |
CN115203159A (zh) * | 2022-07-25 | 2022-10-18 | 北京字跳网络技术有限公司 | 一种数据存储方法、装置、计算机设备和存储介质 |
CN116361309A (zh) * | 2023-05-31 | 2023-06-30 | 北京集度科技有限公司 | 数据查询系统和缓存数据更新方法 |
-
2020
- 2020-06-29 CN CN202010607521.9A patent/CN111767314A/zh active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112632129A (zh) * | 2020-12-31 | 2021-04-09 | 联想未来通信科技(重庆)有限公司 | 一种码流数据管理方法、装置及存储介质 |
CN112632129B (zh) * | 2020-12-31 | 2023-11-21 | 联想未来通信科技(重庆)有限公司 | 一种码流数据管理方法、装置及存储介质 |
CN114490748A (zh) * | 2021-12-27 | 2022-05-13 | 北京吉威数源信息技术有限公司 | 矢量数据统计信息查询方法、装置、设备及存储介质 |
CN115203159A (zh) * | 2022-07-25 | 2022-10-18 | 北京字跳网络技术有限公司 | 一种数据存储方法、装置、计算机设备和存储介质 |
CN115203159B (zh) * | 2022-07-25 | 2024-06-04 | 北京字跳网络技术有限公司 | 一种数据存储方法、装置、计算机设备和存储介质 |
CN116361309A (zh) * | 2023-05-31 | 2023-06-30 | 北京集度科技有限公司 | 数据查询系统和缓存数据更新方法 |
CN116361309B (zh) * | 2023-05-31 | 2023-09-05 | 北京集度科技有限公司 | 数据查询系统和缓存数据更新方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111767314A (zh) | 数据缓存及查询方法、装置、懒缓存系统及存储介质 | |
US6898592B2 (en) | Scoping queries in a search engine | |
US8930332B2 (en) | Method and system for partitioning search indexes | |
EP2281242B1 (en) | Managing storage of individually accessible data units | |
CN109299157B (zh) | 一种分布式大单表的数据导出方法及装置 | |
JP2014524090A (ja) | 範囲に基づく検索のためのデータ格納の管理 | |
CN112287182A (zh) | 图数据存储、处理方法、装置及计算机存储介质 | |
EP2427834A1 (en) | Method and system for search engine indexing and searching using the index | |
EP2304609A1 (en) | Paging hierarchical data | |
CN112015820A (zh) | 分布式图数据库实现的方法、系统、电子装置和存储介质 | |
WO2017161540A1 (zh) | 数据查询的方法、数据对象的存储方法和数据系统 | |
CN114218267A (zh) | 查询请求异步处理方法、装置、计算机设备、存储介质 | |
CN112613271A (zh) | 数据分页方法、装置、计算机设备及存储介质 | |
CN116756253B (zh) | 关系型数据库的数据存储、查询方法、装置、设备和介质 | |
CN111045988B (zh) | 文件查找方法、设备和计算机程序产品 | |
CN106446080B (zh) | 数据查询的方法、查询服务设备、客户端设备和数据系统 | |
CN112181994B (zh) | 运维大数据的分布式内存数据库的刷新方法、装置、介质 | |
US20060230054A1 (en) | On-line organization of data sets | |
CN110389966B (zh) | 一种信息处理方法及装置 | |
US9483560B2 (en) | Data analysis control | |
CN112835873A (zh) | 电网调控异构系统服务化访问方法、系统、设备及介质 | |
JP5093757B2 (ja) | フィールド優先度別端末キャッシュ格納システム、その方法及びそのプログラム | |
CN115455031B (zh) | 一种Doris的数据查询方法、装置、存储介质及设备 | |
CN117909301B (zh) | 基于索引的对象查询方法、装置、设备及介质 | |
CN113127549B (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 |