CN114741335A - 缓存管理方法、装置、介质及设备 - Google Patents
缓存管理方法、装置、介质及设备 Download PDFInfo
- Publication number
- CN114741335A CN114741335A CN202210417846.XA CN202210417846A CN114741335A CN 114741335 A CN114741335 A CN 114741335A CN 202210417846 A CN202210417846 A CN 202210417846A CN 114741335 A CN114741335 A CN 114741335A
- Authority
- CN
- China
- Prior art keywords
- object data
- parameter
- preset
- data
- identifier
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table 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/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
- G06F16/244—Grouping and aggregation
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请属于计算机技术领域,具体涉及一种缓存管理方法、装置、介质及设备。该方法包括:若存储在缓存区域中的对象数据被调用,则根据对象数据创建用于指向对象数据的第一引用指针;并且将第一引用指针存入第一引用表中,将对象数据的预设参数增加第一数值;再通过第一引用表中的第一引用指针的数量以及存入先后顺序对第一引用指针进行释放,且所释放的第一引用指针的对象数据的预设参数减去第一数值;当对象数据的预设参数小于或等于第一预设阈值时,将对象数据从缓存区域中释放。本申请实施例的技术方案能够在保证应用运行性能的情况下,降低应用所占的***内存,实现对于缓存管理的优化。
Description
技术领域
本申请属于计算机技术领域,具体涉及一种缓存管理方法、装置、介质及设备。
背景技术
近年来,计算***所需的内存数据不断增长,因此需要为内存数据计算技术提供更大的内存空间。目前内存数据处理框架广泛应用于机器学习、图计算和流式处理等应用。随机存取存储器(Random Access Memory,简称RAM)作为内存,由于RAM存取数据的速度分别比从硬盘和网络中存取数据的速度快几个数量级,因此内存数据处理框架执行应用的速度也有了大幅度的提高。然而,RAM较高的价格导致内存资源受到限制,只有部分数据能够被缓存到内存中,基于此,需要对内存缓存资源进行管理。
一般情况下,缓存的数据越多对***应用性能的提升越明显,但是由于内存等快速设备空间的限制不可能缓存无限的数据。例如,在Linux操作***中,当物理内存耗尽之后会使用到swap分区,由于swap分区性能不如内存,将内存数据交换到swap分区反而会严重降低应用***性能。
因此,如何在保证应用运行性能的情况下,减少应用的缓存空间占用,是亟需解决的技术问题。
发明内容
本申请的目的在于提供一种缓存管理方法、装置、介质及设备,可以在保证应用运行性能的情况下,减少应用的缓存占用。
本申请的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本申请的实践而习得。
根据本申请实施例的一个方面,提供一种缓存管理方法,所述方法包括:
若存储在缓存区域中的对象数据被调用,则根据所述对象数据创建用于指向所述对象数据的第一引用指针,所述对象数据包括设定为预设数值的预设参数;
将所述第一引用指针存入第一引用表中,并将所述对象数据的预设参数增加第一数值;
当所述第一引用表中的第一引用指针的数量大于预设数量阈值时,根据所述第一引用表中的第一引用指针的存入先后顺序,释放所述第一引用表中的第一引用指针,并将所释放的第一引用指针指向的对象数据的预设参数减去所述第一数值;
当所述对象数据的预设参数小于或等于第一预设阈值时,将所述对象数据从所述缓存区域中释放。
根据本申请实施例的一个方面,提供一种缓存管理装置,所述装置包括:
第一引用指针创建模块,被配置为若存储在缓存区域中的对象数据被调用,则根据所述对象数据创建用于指向所述对象数据的第一引用指针,所述对象数据包括设定为预设数值的预设参数;
第一引用指针存入模块,被配置为将所述第一引用指针存入第一引用表中,并将所述对象数据的预设参数增加第一数值;
第一引用指针释放模块,被配置为当所述第一引用表中的第一引用指针的数量大于预设数量阈值时,根据所述第一引用表中的第一引用指针的存入先后顺序,释放所述第一引用表中的第一引用指针,并将所释放的第一引用指针指向的对象数据的预设参数减去所述第一数值;
对象数据释放模块,被配置为当所述对象数据的预设参数小于或等于第一预设阈值时,将所述对象数据从所述缓存区域中释放。
在本申请的一些实施例中,基于以上技术方案,所述缓存管理装置还包括:
第二引用指针创建单元,被配置为若存储在缓存区域中的对象数据被调用,则根据所述对象数据创建用于指向所述对象数据的第二引用指针,通过所述第二引用指针将所述对象数据发送至调用方,并将所述对象数据的预设参数增加第二数值;
第二引用指针释放单元,被配置为若所述调用方结束调用所述对象数据,则释放所述第二引用指针,并将所述对象数据的预设参数减去所述第二数值。
在本申请的一些实施例中,基于以上技术方案,所述缓存管理装置还包括:
第三引用指针创建单元,被配置为创建所述缓存区域中的各个对象数据分别对应的第三引用指针,并将各个所述第三引用指针存入第三引用表,所述第三引用指针用于指向所述缓存区域中与所述第三引用指针对应的对象数据;
所述第二引用指针创建单元包括:
对象标识获取子单元,被配置为获取需调用的对象数据的对象标识;
第三引用指针查找单元,被配置为根据所述对象标识查找所述第三引用表,得到所述对象标识对应的第三引用指针;
对象数据读取单元,被配置为根据所述第三引用指针读取所述对象标识对应的对象数据,并创建用于指向所读取的对象数据的第二引用指针。
在本申请的一些实施例中,基于以上技术方案,所述缓存管理装置还包括:
第一完整性参数获取单元,被配置为获取需调用的对象数据的第一完整性参数;
完整性参数比较单元,被配置为获取所述第三引用指针读取的对象数据的第二完整性参数,并比较所述第一完整性参数与所述第二完整性参数;
缺失参数确定单元,被配置为当所述第二完整性参数所指示的对象数据的完整程度,未覆盖所述第一完整性参数所指示的对象数据的完整程度时,根据所述第一完整性参数和所述第二完整性参数确定缺失参数,所述缺失参数用于指示所述第一完整性参数所指示的对象数据中除所述第二完整性参数所指示的对象数据之外的其他数据;
对象数据更新单元,被配置为查询本地数据库或云端数据库,读取与所述对象标识、所述缺失参数对应的增量数据,并根据所述增量数据更新所述第三引用指针读取的对象数据。
在本申请的一些实施例中,基于以上技术方案,所述缓存管理装置还包括:
第三引用指针释放单元,被配置为将已从所述缓存区域中释放的对象数据所对应的第三引用指针,从所述第三引用表中释放。
在本申请的一些实施例中,基于以上技术方案,所述缓存管理装置还包括:
本地数据库查询单元,被配置为若所述第三引用表中不存在所述对象标识对应的第三引用指针,则通过查询本地数据库读取所述对象标识对应的对象数据,并创建用于指向所读取的对象数据的第二引用指针;
云端数据库查询单元,被配置为若所述本地数据库中不存在所述对象标识对应的对象数据,则通过查询云端数据库读取所述对象标识对应的对象数据,并创建用于指向所读取的对象数据的第二引用指针。
在本申请的一些实施例中,基于以上技术方案,所述本地数据库查询单元包括:
对象数据第一查询单元,被配置为将一个程序循环内的向所述本地数据库查询对象数据的多个请求,聚合为一个请求后发送至所述本地数据库中,查询并读取各个请求中的对象标识所对应的对象数据;
所述云端数据库查询单元包括:
对象数据第二查询单元,被配置为将一个程序循环内的向所述云端数据库查询对象数据的多个请求,聚合为一个请求后发送至所述云端数据库中,查询并读取各个请求中的对象标识所对应的对象数据。
在本申请的一些实施例中,基于以上技术方案,所述本地数据库查询单元包括:
第一对象标识记录单元,被配置为将第一查询请求发送至所述本地数据库中,并将所述第一查询请求中包括的第一对象标识记录在等待列表中;
第一对象标识删除单元,被配置为接收所述本地数据库返回的所述第一对象标识对应的对象数据,并将所述第一对象标识从所述等待列表中删除;
对象标识比较单元,被配置为在将包括了第二对象标识的第二查询请求发送至所述本地数据库之前,比较所述第二对象标识与所述等待列表中的对象标识;
第二查询请求停止发送单元,被配置为当所述第二对象标识与所述等待列表中的目标对象标识相同时,停止发送所述第二查询请求,并等待所述本地数据库返回所述目标对象标识对应的对象数据后,将所述目标对象标识对应的对象数据作为针对所述第二查询请求的查询结果;
第二查询请求继续发送单元,被配置为当所述第二对象标识与所述等待列表中的任一对象标识均不相同时,继续将所述第二查询请求发送至所述本地数据库,并接收所述本地数据库返回的所述第二对象标识对应的对象数据。
在本申请的一些实施例中,基于以上技术方案,所述缓存管理装置还包括:
对象数据获取单元,被配置为当需要清理所述缓存区域时,获取所述缓存区域中存储的对象数据;
压缩处理单元,被配置为当所述对象数据的预设参数大于第二预设阈值时,对所述对象数据中的预设类别的数据进行压缩处理,所述第二预设阈值大于所述第一预设阈值;
数据释放单元,被配置为当所述对象数据的预设参数大于所述第一预设阈值并且小于或等于所述第二预设阈值时,将所述对象数据中的预设类别的数据从所述缓存区域中释放,并根据所述预设类别的数据更新所述对象数据的完整性参数。
根据本申请实施例的一个方面,提供一种计算机可读介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如以上技术方案中的缓存管理方法。
根据本申请实施例的一个方面,提供一种电子设备,该电子设备包括:处理器;以及存储器,用于存储处理器的可执行指令;其中,处理器被配置为经由执行可执行指令来执行如以上技术方案中的缓存管理方法。
根据本申请实施例的一个方面,提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,计算机设备的处理器执行该计算机指令,使得该计算机设备执行如以上任一技术方案中的缓存管理方法。
在本申请实施例提供的技术方案中,若存储在缓存区域中的对象数据被调用,则根据对象数据创建用于指向对象数据的第一引用指针;并且将第一引用指针存入第一引用表中,将对象数据的预设参数增加第一数值;再通过第一引用表中的第一引用指针的数量以及存入先后顺序对第一引用指针进行释放,且所释放的第一引用指针的对象数据的预设参数减去第一数值;当对象数据的预设参数小于或等于第一预设阈值时,将对象数据从缓存区域中释放;由此,通过对象数据的预设参数实现对于缓存区域中对象数据的释放管理,并且通过第一引用表实现对于第一引用指针的释放管理,能够使得新近调用的对象数据或者近期多次调用的对象数据保留在缓存区域中不释放,而较久未被调用的对象数据倾向于从缓存区域中释放,从而在保证应用运行性能的情况下,能够降低应用所占的***内存,实现对于缓存管理的优化。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示意性地示出了应用本申请技术方案的示例性装置架构框图。
图2示意性地示出了本申请某些实施方式的缓存管理方法的步骤流程图。
图3示意性地示出了本申请某实施例所适用的***的整体架构示意图。
图4示意性地示出了本申请某实施例需要使用到对象数据的应用场景示例图。
图5示意性地示出了本申请某实施例中还可以包括的步骤的步骤流程图。
图6示意性地示出了本申请某实施例中根据对象数据创建用于指向对象数据的第二引用指针的步骤流程图。
图7示意性地示出了本申请某实施例中根据第三引用指针读取对象标识对应的对象数据之后的步骤流程图。
图8示意性地示出了本申请某实施例的对象数据中存储的具体类别数据的示例图。
图9示意性地示出了本申请某实施例中根据对象标识查找第三引用表之后的步骤流程图。
图10示意性地示出了本申请某实施例中通过查询本地数据库读取对象标识对应的对象数据的步骤流程图。
图11示意性地示出了本申请某实施例中还可以包括的步骤的步骤流程图。
图12示意性地示出了本申请实施例提供的缓存管理装置的结构框图。
图13示意性地示出了用于实现本申请实施例的电子设备的计算机***结构框图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本申请将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
在对本申请实施例提供的缓存管理方法、缓存管理装置等技术方案作出详细说明之前,先对本申请部分实施例中涉及的云技术和数据库技术进行简单介绍。
云存储(cloud storage)是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储***(以下简称存储***)是指通过集群应用、网格技术以及分布存储文件***等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储***。
目前,存储***的存储方法为:创建逻辑卷,在创建逻辑卷时,就为每个逻辑卷分配物理存储空间,该物理存储空间可能是某个存储设备或者某几个存储设备的磁盘组成。客户端在某一逻辑卷上存储数据,也就是将数据存储在文件***上,文件***将数据分成许多部分,每一部分是一个对象,对象不仅包含数据而且还包含数据标识(ID,ID entity)等额外的信息,文件***将每个对象分别写入该逻辑卷的物理存储空间,且文件***会记录每个对象的存储位置信息,从而当客户端请求访问数据时,文件***能够根据每个对象的存储位置信息让客户端对数据进行访问。
存储***为逻辑卷分配物理存储空间的过程,具体为:按照对存储于逻辑卷的对象的容量估量(该估量往往相对于实际要存储的对象的容量有很大余量)和独立冗余磁盘阵列(RAID,Redundant Array of Independent Disk)的组别,预先将物理存储空间划分成分条,一个逻辑卷可以理解为一个分条,从而为逻辑卷分配了物理存储空间。
数据库(Database),简而言之可视为电子化的文件柜——存储电子文件的处所,使用者可以对文件中的数据进行新增、查询、更新、删除等操作。所谓“数据库”是以一定方式储存在一起、能与多个使用者共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。
数据库管理***(英语:Database Management System,简称DBMS)是为管理数据库而设计的电脑软件***,一般具有存储、截取、安全保障、备份等基础功能。数据库管理***可以依据它所支持的数据库模型来作分类,例如关系式、XML(Extensible MarkupLanguage,即可扩展标记语言);或依据所支持的计算机类型来作分类,例如服务器群集、移动电话;或依据所用查询语言来作分类,例如SQL(结构化查询语言(Structured QueryLanguage)、XQuery;或依据性能冲量重点来作分类,例如最大规模、最高运行速度;亦或其他的分类方式。不论使用哪种分类方式,一些DBMS能够跨类别,例如,同时支持多种查询语言。
本申请实施例涉及的***可以是由客户端、多个节点(接入网络中的任意形式的计算设备,如服务器、终端设备)通过网络通信的形式连接形成的分布式***。
下面结合具体实施方式对本申请提供的缓存管理方法、缓存管理方法以及对应的装置等做出详细说明。
图1示意性地示出了应用本申请技术方案的示例性装置架构框图。
如图1所示,装置架构100可以包括终端设备110、网络120和服务器130。终端设备110可以包括智能手机、平板电脑、笔记本电脑、台式电脑等各种电子设备。服务器130可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式装置,还可以是提供云计算服务的云服务器。网络120可以是能够在终端设备110和服务器130之间提供通信链路的各种连接类型的通信介质,例如可以是有线通信链路或者无线通信链路。
根据实现需要,本申请实施例中的装置架构可以具有任意数目的终端设备、网络和服务器。例如,服务器130可以是由多个服务器设备组成的服务器群组。另外,本申请实施例提供的技术方案可以应用于终端设备110,也可以应用于服务器130,或者可以由终端设备110和服务器130共同实施,本申请对此不做特殊限定。
举例而言,服务器130可以执行本申请提供的缓存管理方法,若存储在缓存区域中的对象数据被调用,则根据对象数据创建用于指向对象数据的第一引用指针;并且将第一引用指针存入第一引用表中,将对象数据的预设参数增加第一数值;再通过第一引用表中的第一引用指针的数量以及存入先后顺序对第一引用指针进行释放,且所释放的第一引用指针的对象数据的预设参数减去第一数值;当对象数据的预设参数小于或等于第一预设阈值时,将对象数据从缓存区域中释放;由此,通过对象数据的预设参数实现对于缓存区域中对象数据的释放管理,并且通过第一引用表实现对于第一引用指针的释放管理,能够使得新近调用的对象数据或者近期多次调用的对象数据保留不释放,较久未被调用的对象数据较大概率释放,在保证应用运行性能的情况下,减少应用的缓存占用,实现对于缓存管理的优化,提高缓存区域的命中效率,从而提高对象数据的读取效率。
可以理解,面向企业的通讯协作应用,都是围绕组织架构展开的,目前的大公司、组织集团甚至已经达到了几十万甚至数百万级别的成员规模。受限于客户端设备的可用内存容量,特别是低端移动设备,在面对这样超大规模的组织架构时,如果实现在设备本地管理完整的组织架构数据有较大困难,可以采用云端存储大规模的组织架构的方式实现组织架构信息拉取的实时处理。
在如上云端存储的方案中,虽然客户端无需下载存储完整组织架构,且数据始终能保持最新。但是也会产生相应缺点:每一步调用读取操作都要等待网络交互,用户体验较差,且在无网络环境无法离线使用,应用的响应时间较长,运行性能较差。
而本申请某些实施方式通中,过对象数据的预设参数实现对于缓存区域中对象数据的释放管理,并且通过第一引用表实现对于第一引用指针的释放管理,能够使得新近调用的对象数据或者近期多次调用的对象数据保留不释放,较久未被调用的对象数据较大概率释放,结合云端存储的方案,能够提升应用的响应速度,能够在保证应用运行性能的情况下,减少应用的缓存占用,从而大大降低应用对于客户端设备的内存占用,在低端设备中应用也能很好地运行,并且在低网络或者无网络环境下也可以实现部分近期调用或调用频繁的对象数据的读取、显示等相关业务活动,能够提升用户体验。
下面结合具体实施方式对本申请提供的缓存管理方法做出详细说明。
图2示意性地示出了本申请某些实施方式的缓存管理方法的步骤流程图。该缓存管理方法的执行主体可以是终端设备,也可以是服务器等,本申请对此不设限。终端设备包括但不限于手机、电脑、智能语音交互设备、智能家电、车载终端、飞行器等。本发明实施例可应用于各种场景,包括但不限于云技术、人工智能、智慧交通、辅助驾驶等。
可以理解的是,在本申请的具体实施方式中,涉及到使用用户的相关数据时,当本申请以上实施例运用到具体产品或技术中时,需要获得相关用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
如图2所示,该缓存管理方法主要可以包括如下步骤S210至S240。
S210.若存储在缓存区域中的对象数据被调用,则根据对象数据创建用于指向对象数据的第一引用指针,对象数据包括设定为预设数值的预设参数。
在某些实施方式中,第一引用指针可以是智能指针中的强引用指针。智能指针包括强引用指针和弱引用指针。当强引用指针指向某一对象数据时,该对象数据禁止从缓存空间中释放。当弱引用指针指向某一对象数据时,该对象数据可以从缓存空间中释放,也可以在缓存空间中继续保留。
在某些实施方式中,第一引用指针可以是普通指针,而对象数据的预设参数与第一数值的和,大于第一预设阈值。
预设数值可以为0、1、2、5、10、128或256等,预设数值也可以是负值-1、-2、-5、-10、-128或-256,本申请对预设数值的具体取值不作特殊限制。
预设参数可以存储在对象数据中,也可以存储在缓存区域中独立于对象数据的一块预设区域,本申请对此不作特殊限制。
对象数据可以为与某一对象标识关联的对象实例User的数据。或者,对象数据可以为存储在缓存区域中的可被读取的对象数据。
图3示意性地示出了本申请某实施例所适用的***的整体架构示意图。请参阅图3,***整体架构包括用户界面、逻辑层、对象缓存管理器和数据同步模块。其中,对象缓存管理器用于执行本申请某实施例的缓存管理方法。用户界面和逻辑层均可以调用对象数据以完成对应的业务操作用。对象缓存管理器还可以向本地数据库或云端数据库发送查询请求、同步请求等以从本地数据库或云端数据库获取最新的对象数据。
具体例子中,对象缓存管理器用于管理存储于缓存区域的对象数据的生命周期。接口层可以用于对外提供GetUserByID的统一异步接口,该接口可以接收用于获取对象数据的对象标识,并根据对象标识异步回传对象数据。对象缓存管理器可以与数据同步模块所管理的数据库中的对象数据进行通信,以获取存储在源数据库中的对象数据。
在一些实施方式中,数据同步模块可以与云端服务器通讯以执行本地数据库和云端数据库之间的数据同步协议。数据同步协议可以是将本地数据库的对象数据上次更新时获取的版本号上传到云端服务器,并从云端服务器下载当前版本到最新版本之间的变更数据,将变更数据存储到客户端本地数据库,或者通过变更数据更新本地数据库的对象数据。由此,通过数据同步模块可以从数据库中访问到原始数据,从而能够为对象缓存管理器提供数据库访问接口,使得对象缓存管理器能够访问到原始的对象数据。
图4示意性地示出了本申请某实施例需要使用到对象数据的应用场景示例图。请参阅图4,当某应用的逻辑层或者用户界面中需要启动消息、会话、架构(即组织架构)、日历、邮箱、会议、文档、网盘等业务活动时,都可能需要在缓存中调用与业务相关联的对象数据。
图5示意性地示出了本申请某实施例中还可以包括的步骤的步骤流程图。如图5所示,在以上实施例的基础上,本申请某实施例的方法可以进一步包括以下步骤S510和S520。
S510.若存储在缓存区域中的对象数据被调用,则根据对象数据创建用于指向对象数据的第二引用指针,通过第二引用指针将对象数据发送至调用方,并将对象数据的预设参数增加第二数值;
S520.若调用方结束调用对象数据,则释放第二引用指针,并将对象数据的预设参数减去第二数值。
在某些实施方式中,第二引用指针可以是普通指针,而对象数据的预设参数与第二数值的和,大于第一预设阈值。
在某些实施方式中,第二引用指针可以是智能指针中的强引用指针。
由此,能够使得当对象数据被调用后且未结束调用时,保持第二引用指针不被释放,同时也保持第二引用指针指向的对象数据继续存储在缓存中以供应用的业务活动随时读取,可以理解,缓存的读取效率较高,从而能够保证应用能够正常高效运行。
在以上实施例的基础上,在某些实施方式中,在步骤S310之前,还可以包括如下步骤:
创建缓存区域中的各个对象数据分别对应的第三引用指针,并将各个第三引用指针存入第三引用表,第三引用指针用于指向缓存区域中与第三引用指针对应的对象数据。
图6示意性地示出了本申请某实施例中根据对象数据创建用于指向对象数据的第二引用指针的步骤流程图。如图6所示,在以上实施例的基础上,步骤S410的根据对象数据创建用于指向对象数据的第二引用指针,可以进一步包括以下步骤S610至S630。
S610.获取需调用的对象数据的对象标识;
S620.根据对象标识查找第三引用表,得到对象标识对应的第三引用指针;
S630.根据第三引用指针读取对象标识对应的对象数据,并创建用于指向所读取的对象数据的第二引用指针。
具体地,第三引用指针可以是智能指针或普通指针。在具体实施例中,第三引用指针可以是弱引用指针。
第三引用表可以通过Map对象的形式建立,可以方便对于第三引用指针的记录和查找。第三引用表可以建立各个第三引用指针与该第三引用指针所指向的对象数据的对象标识的映射关系,从而能够通过对象标识在第三引用表中快速查找到对应的第三引用指针。并且,由于第三引用表中存储有缓存区域中的各个对象数据分别对应的第三引用指针,因此通过第三引用表可以快速完成对于存储在缓存区域的对象数据的查找,能够提升应用运行效率。
图7示意性地示出了本申请某实施例中根据第三引用指针读取对象标识对应的对象数据之后的步骤流程图。如图7所示,在以上实施例的基础上,对象数据还包括完整性参数,完整性参数用于指示对象数据的完整程度;步骤S630的根据第三引用指针读取对象标识对应的对象数据之后,可以进一步包括以下步骤S710至S740。
S710.获取需调用的对象数据的第一完整性参数;
S720.获取第三引用指针读取的对象数据的第二完整性参数,并比较第一完整性参数与第二完整性参数;
S730.当第二完整性参数所指示的对象数据的完整程度,未覆盖第一完整性参数所指示的对象数据的完整程度时,根据第一完整性参数和第二完整性参数确定缺失参数,缺失参数用于指示第一完整性参数所指示的对象数据中除第二完整性参数所指示的对象数据之外的其他数据;
S740.查询本地数据库或云端数据库,读取与对象标识、缺失参数对应的增量数据,并根据增量数据更新第三引用指针读取的对象数据。
由此,能够通过完整性参数所指示的对象数据的完整程度,在读取到的对象数据的完整程度不足时,只需向本地数据库或云端数据库查询和读取与缺失参数对应的增量数据,以更新原有的对象数据即可,从而能够优化对象数据的读取流程,能够避免相同数据的重复读取,能够提升数据读取效率,提升应用的运行性能。
图8示意性地示出了本申请某实施例的对象数据中存储的具体类别数据的示例图。请参阅图8,对象数据中可以存储有对象标识、完整性参数、压缩数据、未压缩数据。其中,未压缩数据可以包括对象的基础信息、对象的详细信息、对象的扩展信息等。基础信息例如可以是组织架构中某一对象的头像、昵称等;详细信息例如可以是组织架构中某一对象的联系方式、职位名称等;扩展信息例如可以是组织架构中某一对象的上级信息、出勤状态。其中,出勤状态可以包括正常到岗、居家办公、出差中、休假中等。压缩数据可以由未压缩数据中的部分数据压缩后转换形成。
由此,能够将对象数据所包括的众多数据信息划分为不同类别,并且,可以根据各个字段的数据有无生成对象数据的完整性参数,从而使得应用在调用对象数据时,可以无需调用完整的整个对象数据,而是通过对于完整性参数的设置调用部分的对象数据,有利于实现对于对象数据的懒加载,能够优化对象数据的调用方式,避免不必要数据的调用,能够提升数据读取效率,提升应用的运行性能。
例如,请结合图3,应用的用户界面或者逻辑层在通过GetUserByID接口调用对象数据时,可以在调用请求中携带一个用于表示所需调用的数据类别的完整性参数loaded。然后,对象缓存管理器可以通过对完整性参数loaded和在缓存区域中读取到的对象数据进行位与运算,以检查在缓存区域中读取到的对象数据的完整程度是否满足调用方的要求。如果满足则可直接返回对象数据至调用方;若不满足,则需要从本地数据库或云端数据库获取这些缺失的数据,并根据获取到的增量数据更新在缓存区域中读取到的对象数据,将更新后的对象数据返回值调用方。
图9示意性地示出了本申请某实施例中根据对象标识查找第三引用表之后的步骤流程图。如图9所示,在以上实施例的基础上,步骤S620的根据对象标识查找第三引用表之后,可以进一步包括以下步骤S910和S920。
S910.若第三引用表中不存在对象标识对应的第三引用指针,则通过查询本地数据库读取对象标识对应的对象数据,并创建用于指向所读取的对象数据的第二引用指针;
S920.若本地数据库中不存在对象标识对应的对象数据,则通过查询云端数据库读取对象标识对应的对象数据,并创建用于指向所读取的对象数据的第二引用指针。
由此,在第三引用表中不存在对象标识对应的第三引用指针,说明在缓存区域中未存储有该对象标识对应的对象数据,此时,通过查询本地数据库读取对象标识对应的对象数据,并创建用于指向所读取的对象数据的第二引用指针,能够将该对象标识对应的对象数据成功返回至调用方,并且可以将该对象数据对应的对象数据存储至缓存区域中,以备下一次调用时节省调用时间。
同理,若本地数据库中不存在对象标识对应的对象数据,则通过查询云端数据库读取对象标识对应的对象数据,并创建用于指向所读取的对象数据的第二引用指针能够将该对象标识对应的对象数据成功返回至调用方,并且可以将该对象数据对应的最新对象数据存储至缓存区域中,以备下一次调用时节省调用时间。
可以理解,当本地数据库中不存在对象标识对应的对象数据时,可以并不通过等待本地数据库和云端数据库之间的数据同步协议执行并更新本地数据库,而是通过直接向云端数据库发出单点查询的方式,在云端数据库中直接查询读取该对象标识对应的对象数据,能够提升***响应效率,从而提升应用运行性能。
在某些实施例中,若在第三引用表中未查询到对象标识对应的对象数据,本申请不再去第一引用表中对对象数据进行查找,而是直接到本地数据库中读取对象标识对应的对象数据。可以理解,当第一引用指针是智能指针中的强引用指针时,或者当对象数据的预设参数与第一数值的和大于第一预设阈值时,第一引用表中的指针所指向的对象数据必定存储在缓存区域中,因此,第一引用表中的指针所指向的对象数据,在第三引用表中必定会记录有相应的第三引用指针。由此,能够跳过无效的在第三引用表中根据对象标识查找相应的第三引用指针的步骤,能够提升对于对象数据的查询读取效率。
在以上实施例的基础上,在某些实施方式中,步骤S910的通过查询本地数据库读取对象标识对应的对象数据,可以包括如下步骤:
将一个程序循环内的向本地数据库查询对象数据的多个请求,聚合为一个请求后发送至本地数据库中,查询并读取各个请求中的对象标识所对应的对象数据。
在以上实施例的基础上,在某些实施方式中,步骤S920的通过查询云端数据库读取对象标识对应的对象数据,可以包括如下步骤:
将一个程序循环内的向云端数据库查询对象数据的多个请求,聚合为一个请求后发送至云端数据库中,查询并读取各个请求中的对象标识所对应的对象数据。
由此,在一个程序循环内的请求的多个本地数据库请求,可以聚合为提交一次批量本地数据库请求;在一个程序循环内的请求的多个云端数据库请求,或是一次批量的云端数据库请求;从而能够减少数据传输次数,降低IO操作次数,减少应用的***消耗,提升应用的运行性能。
图10示意性地示出了本申请某实施例中通过查询本地数据库读取对象标识对应的对象数据的步骤流程图。如图10所示,在以上实施例的基础上,步骤S910的通过查询本地数据库读取对象标识对应的对象数据,可以进一步包括以下步骤S1010至S1050。
S1010.将第一查询请求发送至本地数据库中,并将第一查询请求中包括的第一对象标识记录在等待列表中;
S1020.接收本地数据库返回的第一对象标识对应的对象数据,并将第一对象标识从等待列表中删除;
S1030.在将包括了第二对象标识的第二查询请求发送至本地数据库之前,比较第二对象标识与等待列表中的对象标识;
S1040.当第二对象标识与等待列表中的目标对象标识相同时,停止发送第二查询请求,并等待本地数据库返回目标对象标识对应的对象数据后,将目标对象标识对应的对象数据作为针对第二查询请求的查询结果;
S1050.当第二对象标识与等待列表中的任一对象标识均不相同时,继续将第二查询请求发送至本地数据库,并接收本地数据库返回的第二对象标识对应的对象数据。
由此,在根据一个对象标识进行数据库查询请求的查询结果返回至缓存区域之前,调用方针对该对象标识又一次发起的数据调用请求并不会再次地生成对应的数据库请求,而是等待之前的数据库查询请求的查询结果后,将该查询结果返回至调用方。查询结果可以为查询成功的标记位,以及读取到的对象数据;查询结果也可以是查询失败的标记位吗,以及查询失败的原因。由此,能够避免对于数据库的高并发查询导致的数据库崩溃,能够提升应用运行的稳定性。
S220.将第一引用指针存入第一引用表中,并将对象数据的预设参数增加第一数值。
第三引用表可以通过LRUCache(Least Recently Used Cache)对象的形式建立,或者,也可以通过其他对象的形式建立,本申请对此不作特殊限制。
由此,将第一引用指针存入第一引用表中,并将对象数据的预设参数增加第一数值,能够使得第一引用指针存入第一引用表,并具有时间较新的存入顺序,从而实现了该第一引用指针指向的对象数据在缓存中的优先级的更新,使得该对象数据能够在缓存区域中被优先保留,避免清理。
由此,能够有利于保证在近期调用过的对象数据更大概率保持在缓存区域中不被释放,可以理解,在近期调用过的对象数据更大概率会被再次调用,从而能够提升缓存区域的命中率,由于缓存区域的读取速度较快,且能够避免数据库查询的繁琐,从而能够提升应用的运行效率。
S230.当第一引用表中的第一引用指针的数量大于预设数量阈值时,根据第一引用表中的第一引用指针的存入先后顺序,释放第一引用表中的第一引用指针,并将所释放的第一引用指针指向的对象数据的预设参数减去第一数值。
可以理解,当第一引用表中的第一引用指针的数量大于预设数量阈值时,说明缓存区域中存储有较多的被调用过的对象数据,此时,根据第一引用表中的第一引用指针的存入先后顺序,释放第一引用表中的第一引用指针,并将所释放的第一引用指针指向的对象数据的预设参数减去第一数值,能够将调用时间较旧的对象数据、且近期未被再次调用过的对象数据从缓存区域中清除,并将调用时间较新,或在历史被多次频繁被调用的对象数据在缓存区域中保持。可以理解,调用时间较旧的对象数据、且近期未被再次调用过的对象数据未来被调用的几率较低,而调用时间较新,或在历史被多次频繁被调用的对象数据未来被调用的几率较高,因此,如上方案步骤能够在缓存区域中存储最有可能被调用到的对象数据,能够提升缓存区域的命中率,从而提升应用的运行效率。
S240.当对象数据的预设参数小于或等于第一预设阈值时,将对象数据从缓存区域中释放。
当对象数据的预设参数小于或等于第一预设阈值时,说明该对象数据可被推测并不记录于第一引用表中,也不处于被调用状态,被再次调用的可能性较低。此时,将对象数据从缓存区域中释放,能够降低缓存空间的使用空间,在保证应用运行性能的情况下,能够降低应用所占的***内存,提高缓存管理的效率。
在某些实施方式中,在以上实施例的基础上,在步骤S240的在将对象数据从缓存区域中释放之后,可以进一步包括以下步骤:
将已从缓存区域中释放的对象数据所对应的第三引用指针,从第三引用表中释放。
由此,已从缓存区域中释放的对象数据所对应的第三引用指针,从第三引用表中释放,能够使得降低第三引用表的内存占用空间的同时,也能避免通过第三引用表无法在缓存区域中查找到对象标识对应的对象数据,能够提升应用的运行性能。
可以理解,由于加入第三引用表、被第三引用指针指向,并不会增加对象数据的预设参数。因此,当对象数据既不被第二引用指针指向,不处于被调用的状态,又不被第一引用指针指向,不属于调用时间较新,或在历史被多次频繁被调用的对象数据时,缓存很可能在缓存数据较多时,将该对象数据清理,此时,也将已从缓存区域中释放的对象数据所对应的第三引用指针,从第三引用表中释放。
图11示意性地示出了本申请某实施例中还可以包括的步骤的步骤流程图。如图11所示,在以上实施例的基础上,本申请某实施例的方法可以进一步包括以下步骤S1110至S1130。
S1110.当需要清理缓存区域时,获取缓存区域中存储的对象数据;
S1120.当对象数据的预设参数大于第二预设阈值时,对对象数据中的预设类别的数据进行压缩处理,第二预设阈值大于第一预设阈值;
S1130.当对象数据的预设参数大于第一预设阈值并且小于或等于第二预设阈值时,将对象数据中的预设类别的数据从缓存区域中释放,并根据预设类别的数据更新对象数据的完整性参数。
具体地,预设类别的数据可以是对象数据中较常被调用到的类别数据。具体地,可以根据历史调用中的各个调用请求携带的完整性参数,确定对象数据中较常被调用到的类别数据,以确定预设类别。
由此,能够通过对对象数据中的预设类别的数据进行压缩处理的方案步骤,实现对缓存空间占用的进一步缩减,从而降低应用所占的***内存,实现缓存高效管理的进一步优化。
在某些实施方式中,在应用切换到后台时,或者是操作***收到内存警告时,可以根据如上步骤S1110至S1130所示的方法步骤,对对象数据的缓存占用进行优化。
在某些实施方式中,第二数值可以大于第一数值,预设数值与第一数值的和可以大于第一预设阈值并且小于或等于第二预设阈值,预设数值与第二数值的和可以大于第二预设阈值。由此,能够将正处于被调用状态的对象数据的预设类别的数据,进行压缩处理并存储在对象数据的压缩数据中,将原存储于未压缩数据中的预设类别的数据则被删除。并且,能够将缓存区域中的对象数据中,除了正处于被调用状态的对象数据之外的其他对象数据,从缓存区域中释放。从而,能够在应用切换到后台时,或者是操作***收到内存警告等需要清理缓存区域的情况出现时,实现对于缓存区域中的近期调用的对象数据的安全释放,避免处于调用状态的对象数据被清理而触发数据库查询操作而影响应用性能甚至导致应用出错。
在某些实施方式中,本申请某实施例的方法可以进一步包括以下步骤:当需要清理缓存区域时,获取缓存区域中存储的对象数据;当对象数据的预设参数大于第一预设阈值并且小于或等于第二预设阈值时,对对象数据中的预设类别的数据进行压缩处理,第二预设阈值大于第一预设阈值。当对象数据的预设参数大于第二预设阈值时,不对对象数据进行任何处理。由此,可以实现对于缓存区域中的近期调用的对象数据的压缩,保留处于调用状态的对象数据,从而能够提升应用运行效率。
应当注意,尽管在附图中以特定顺序描述了本申请中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
以下介绍本申请的装置实施例,可以用于执行本申请上述实施例中的缓存管理方法。图12示意性地示出了本申请实施例提供的缓存管理装置的结构框图。如图12所示,缓存管理装置1200包括:
第一引用指针创建模块1210,被配置为若存储在缓存区域中的对象数据被调用,则根据对象数据创建用于指向对象数据的第一引用指针,对象数据包括设定为预设数值的预设参数;
第一引用指针存入模块1220,被配置为将第一引用指针存入第一引用表中,并将对象数据的预设参数增加第一数值;
第一引用指针释放模块1230,被配置为当第一引用表中的第一引用指针的数量大于预设数量阈值时,根据第一引用表中的第一引用指针的存入先后顺序,释放第一引用表中的第一引用指针,并将所释放的第一引用指针指向的对象数据的预设参数减去第一数值;
对象数据释放模块1240,被配置为当对象数据的预设参数小于或等于第一预设阈值时,将对象数据从缓存区域中释放。
在本申请的一些实施例中,基于以上技术方案,缓存管理装置还包括:
第二引用指针创建单元,被配置为若存储在缓存区域中的对象数据被调用,则根据对象数据创建用于指向对象数据的第二引用指针,通过第二引用指针将对象数据发送至调用方,并将对象数据的预设参数增加第二数值;
第二引用指针释放单元,被配置为若调用方结束调用对象数据,则释放第二引用指针,并将对象数据的预设参数减去第二数值。
在本申请的一些实施例中,基于以上技术方案,缓存管理装置还包括:
第三引用指针创建单元,被配置为创建缓存区域中的各个对象数据分别对应的第三引用指针,并将各个第三引用指针存入第三引用表,第三引用指针用于指向缓存区域中与第三引用指针对应的对象数据;
第二引用指针创建单元包括:
对象标识获取子单元,被配置为获取需调用的对象数据的对象标识;
第三引用指针查找单元,被配置为根据对象标识查找第三引用表,得到对象标识对应的第三引用指针;
对象数据读取单元,被配置为根据第三引用指针读取对象标识对应的对象数据,并创建用于指向所读取的对象数据的第二引用指针。
在本申请的一些实施例中,基于以上技术方案,缓存管理装置还包括:
第一完整性参数获取单元,被配置为获取需调用的对象数据的第一完整性参数;
完整性参数比较单元,被配置为获取第三引用指针读取的对象数据的第二完整性参数,并比较第一完整性参数与第二完整性参数;
缺失参数确定单元,被配置为当第二完整性参数所指示的对象数据的完整程度,未覆盖第一完整性参数所指示的对象数据的完整程度时,根据第一完整性参数和第二完整性参数确定缺失参数,缺失参数用于指示第一完整性参数所指示的对象数据中除第二完整性参数所指示的对象数据之外的其他数据;
对象数据更新单元,被配置为查询本地数据库或云端数据库,读取与对象标识、缺失参数对应的增量数据,并根据增量数据更新第三引用指针读取的对象数据。
在本申请的一些实施例中,基于以上技术方案,缓存管理装置还包括:
第三引用指针释放单元,被配置为将已从缓存区域中释放的对象数据所对应的第三引用指针,从第三引用表中释放。
在本申请的一些实施例中,基于以上技术方案,缓存管理装置还包括:
本地数据库查询单元,被配置为若第三引用表中不存在对象标识对应的第三引用指针,则通过查询本地数据库读取对象标识对应的对象数据,并创建用于指向所读取的对象数据的第二引用指针;
云端数据库查询单元,被配置为若本地数据库中不存在对象标识对应的对象数据,则通过查询云端数据库读取对象标识对应的对象数据,并创建用于指向所读取的对象数据的第二引用指针。
在本申请的一些实施例中,基于以上技术方案,本地数据库查询单元包括:
对象数据第一查询单元,被配置为将一个程序循环内的向本地数据库查询对象数据的多个请求,聚合为一个请求后发送至本地数据库中,查询并读取各个请求中的对象标识所对应的对象数据;
云端数据库查询单元包括:
对象数据第二查询单元,被配置为将一个程序循环内的向云端数据库查询对象数据的多个请求,聚合为一个请求后发送至云端数据库中,查询并读取各个请求中的对象标识所对应的对象数据。
在本申请的一些实施例中,基于以上技术方案,本地数据库查询单元包括:
第一对象标识记录单元,被配置为将第一查询请求发送至本地数据库中,并将第一查询请求中包括的第一对象标识记录在等待列表中;
第一对象标识删除单元,被配置为接收本地数据库返回的第一对象标识对应的对象数据,并将第一对象标识从等待列表中删除;
对象标识比较单元,被配置为在将包括了第二对象标识的第二查询请求发送至本地数据库之前,比较第二对象标识与等待列表中的对象标识;
第二查询请求停止发送单元,被配置为当第二对象标识与等待列表中的目标对象标识相同时,停止发送第二查询请求,并等待本地数据库返回目标对象标识对应的对象数据后,将目标对象标识对应的对象数据作为针对第二查询请求的查询结果;
第二查询请求继续发送单元,被配置为当第二对象标识与等待列表中的任一对象标识均不相同时,继续将第二查询请求发送至本地数据库,并接收本地数据库返回的第二对象标识对应的对象数据。
在本申请的一些实施例中,基于以上技术方案,缓存管理装置还包括:
对象数据获取单元,被配置为当需要清理缓存区域时,获取缓存区域中存储的对象数据;
压缩处理单元,被配置为当对象数据的预设参数大于第二预设阈值时,对对象数据中的预设类别的数据进行压缩处理,第二预设阈值大于第一预设阈值;
数据释放单元,被配置为当对象数据的预设参数大于第一预设阈值并且小于或等于第二预设阈值时,将对象数据中的预设类别的数据从缓存区域中释放,并根据预设类别的数据更新对象数据的完整性参数。
本申请各实施例中提供的缓存管理装置的具体细节已经在对应的相关方法实施例中进行了详细的描述,此处不再赘述。
图13示意性地示出了用于实现本申请实施例的电子设备的计算机***结构框图。
需要说明的是,图13示出的电子设备的计算机***1300仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图13所示,计算机***1300包括中央处理器1301(Central Processing Unit,CPU),其可以根据存储在只读存储器1302(Read-Only Memory,ROM)中的程序或者从存储部分1308加载到随机访问存储器1303(Random Access Memory,RAM)中的程序而执行各种适当的动作和处理。在随机访问存储器1303中,还存储有***操作所需的各种程序和数据。中央处理器1301、在只读存储器1302以及随机访问存储器1303通过总线1304彼此相连。输入/输出接口1305(Input/Output接口,即I/O接口)也连接至总线1304。
以下部件连接至输入/输出接口1305:包括键盘、鼠标等的输入部分1306;包括诸如阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid Crystal Display,LCD)等以及扬声器等的输出部分1307;包括硬盘等的存储部分1308;以及包括诸如局域网卡、调制解调器等的网络接口卡的通信部分1309。通信部分1309经由诸如因特网的网络执行通信处理。驱动器1310也根据需要连接至输入/输出接口1305。可拆卸介质1311,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1310上,以便于从其上读出的计算机程序根据需要被安装入存储部分1308。
特别地,根据本申请的实施例,各个方法流程图中所描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1309从网络上被下载和安装,和/或从可拆卸介质1311被安装。在该计算机程序被中央处理器1301执行时,执行本申请的***中限定的各种功能。
需要说明的是,本申请实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、闪存、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本申请实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
Claims (12)
1.一种缓存管理方法,其特征在于,所述方法包括:
若存储在缓存区域中的对象数据被调用,则根据所述对象数据创建用于指向所述对象数据的第一引用指针,所述对象数据包括设定为预设数值的预设参数;
将所述第一引用指针存入第一引用表中,并将所述对象数据的预设参数增加第一数值;
当所述第一引用表中的第一引用指针的数量大于预设数量阈值时,根据所述第一引用表中的第一引用指针的存入先后顺序,释放所述第一引用表中的第一引用指针,并将所释放的第一引用指针指向的对象数据的预设参数减去所述第一数值;
当所述对象数据的预设参数小于或等于第一预设阈值时,将所述对象数据从所述缓存区域中释放。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若存储在缓存区域中的对象数据被调用,则根据所述对象数据创建用于指向所述对象数据的第二引用指针,通过所述第二引用指针将所述对象数据发送至调用方,并将所述对象数据的预设参数增加第二数值;
若所述调用方结束调用所述对象数据,则释放所述第二引用指针,并将所述对象数据的预设参数减去所述第二数值。
3.根据权利要求2所述的方法,其特征在于,在根据所述对象数据创建用于指向所述对象数据的第二引用指针之前,所述方法还包括:
创建所述缓存区域中的各个对象数据分别对应的第三引用指针,并将各个所述第三引用指针存入第三引用表,所述第三引用指针用于指向所述缓存区域中与所述第三引用指针对应的对象数据;
根据所述对象数据创建用于指向所述对象数据的第二引用指针,包括:
获取需调用的对象数据的对象标识;
根据所述对象标识查找所述第三引用表,得到所述对象标识对应的第三引用指针;
根据所述第三引用指针读取所述对象标识对应的对象数据,并创建用于指向所读取的对象数据的第二引用指针。
4.根据权利要求3所述的方法,其特征在于,所述对象数据还包括完整性参数,所述完整性参数用于指示所述对象数据的完整程度;在根据所述第三引用指针读取所述对象标识对应的对象数据之后,所述方法包括:
获取需调用的对象数据的第一完整性参数;
获取所述第三引用指针读取的对象数据的第二完整性参数,并比较所述第一完整性参数与所述第二完整性参数;
当所述第二完整性参数所指示的对象数据的完整程度,未覆盖所述第一完整性参数所指示的对象数据的完整程度时,根据所述第一完整性参数和所述第二完整性参数确定缺失参数,所述缺失参数用于指示所述第一完整性参数所指示的对象数据中除所述第二完整性参数所指示的对象数据之外的其他数据;
查询本地数据库或云端数据库,读取与所述对象标识、所述缺失参数对应的增量数据,并根据所述增量数据更新所述第三引用指针读取的对象数据。
5.根据权利要求3所述的方法,其特征在于,在将所述对象数据从所述缓存区域中释放之后,所述方法还包括:
将已从所述缓存区域中释放的对象数据所对应的第三引用指针,从所述第三引用表中释放。
6.根据权利要求3所述的方法,其特征在于,在根据所述对象标识查找所述第三引用表之后,所述方法还包括:
若所述第三引用表中不存在所述对象标识对应的第三引用指针,则通过查询本地数据库读取所述对象标识对应的对象数据,并创建用于指向所读取的对象数据的第二引用指针;
若所述本地数据库中不存在所述对象标识对应的对象数据,则通过查询云端数据库读取所述对象标识对应的对象数据,并创建用于指向所读取的对象数据的第二引用指针。
7.根据权利要求6所述的方法,其特征在于,通过查询本地数据库读取所述对象标识对应的对象数据,包括:
将一个程序循环内的向所述本地数据库查询对象数据的多个请求,聚合为一个请求后发送至所述本地数据库中,查询并读取各个请求中的对象标识所对应的对象数据;
通过查询云端数据库读取所述对象标识对应的对象数据,包括:
将一个程序循环内的向所述云端数据库查询对象数据的多个请求,聚合为一个请求后发送至所述云端数据库中,查询并读取各个请求中的对象标识所对应的对象数据。
8.根据权利要求6所述的方法,其特征在于,通过查询本地数据库读取所述对象标识对应的对象数据,包括:
将第一查询请求发送至所述本地数据库中,并将所述第一查询请求中包括的第一对象标识记录在等待列表中;
接收所述本地数据库返回的所述第一对象标识对应的对象数据,并将所述第一对象标识从所述等待列表中删除;
在将包括了第二对象标识的第二查询请求发送至所述本地数据库之前,比较所述第二对象标识与所述等待列表中的对象标识;
当所述第二对象标识与所述等待列表中的目标对象标识相同时,停止发送所述第二查询请求,并等待所述本地数据库返回所述目标对象标识对应的对象数据后,将所述目标对象标识对应的对象数据作为针对所述第二查询请求的查询结果;
当所述第二对象标识与所述等待列表中的任一对象标识均不相同时,继续将所述第二查询请求发送至所述本地数据库,并接收所述本地数据库返回的所述第二对象标识对应的对象数据。
9.根据权利要求1-8任意一项所述的方法,其特征在于,所述对象数据包括完整性参数,所述完整性参数用于指示所述对象数据的完整程度;所述方法还包括:
当需要清理所述缓存区域时,获取所述缓存区域中存储的对象数据;
当所述对象数据的预设参数大于第二预设阈值时,对所述对象数据中的预设类别的数据进行压缩处理,所述第二预设阈值大于所述第一预设阈值;
当所述对象数据的预设参数大于所述第一预设阈值并且小于或等于所述第二预设阈值时,将所述对象数据中的预设类别的数据从所述缓存区域中释放,并根据所述预设类别的数据更新所述对象数据的完整性参数。
10.一种缓存管理装置,其特征在于,所述装置包括:
第一引用指针创建模块,被配置为若存储在缓存区域中的对象数据被调用,则根据所述对象数据创建用于指向所述对象数据的第一引用指针,所述对象数据包括设定为预设数值的预设参数;
第一引用指针存入模块,被配置为将所述第一引用指针存入第一引用表中,并将所述对象数据的预设参数增加第一数值;
第一引用指针释放模块,被配置为当所述第一引用表中的第一引用指针的数量大于预设数量阈值时,根据所述第一引用表中的第一引用指针的存入先后顺序,释放所述第一引用表中的第一引用指针,并将所释放的第一引用指针指向的对象数据的预设参数减去所述第一数值;
对象数据释放模块,被配置为当所述对象数据的预设参数小于或等于第一预设阈值时,将所述对象数据从所述缓存区域中释放。
11.一种计算机可读介质,其特征在于,其上存储有计算机程序,该计算机程序被处理器执行时实现权利要求1至9中任意一项所述的缓存管理方法。
12.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1至9中任意一项所述的缓存管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210417846.XA CN114741335A (zh) | 2022-04-20 | 2022-04-20 | 缓存管理方法、装置、介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210417846.XA CN114741335A (zh) | 2022-04-20 | 2022-04-20 | 缓存管理方法、装置、介质及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114741335A true CN114741335A (zh) | 2022-07-12 |
Family
ID=82282943
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210417846.XA Pending CN114741335A (zh) | 2022-04-20 | 2022-04-20 | 缓存管理方法、装置、介质及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114741335A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115098538A (zh) * | 2022-08-25 | 2022-09-23 | 北京永洪商智科技有限公司 | 一种数据库查询优化方法及*** |
CN115543270A (zh) * | 2022-10-08 | 2022-12-30 | 睿珀智能科技有限公司 | 基于消息驱动的软件架构方法、***及设备 |
-
2022
- 2022-04-20 CN CN202210417846.XA patent/CN114741335A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115098538A (zh) * | 2022-08-25 | 2022-09-23 | 北京永洪商智科技有限公司 | 一种数据库查询优化方法及*** |
CN115543270A (zh) * | 2022-10-08 | 2022-12-30 | 睿珀智能科技有限公司 | 基于消息驱动的软件架构方法、***及设备 |
CN115543270B (zh) * | 2022-10-08 | 2023-06-16 | 睿珀智能科技有限公司 | 基于消息驱动的软件架构方法、***及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109254733B (zh) | 用于存储数据的方法、装置和*** | |
CN108629029B (zh) | 一种应用于数据仓库的数据处理方法和装置 | |
CN114741335A (zh) | 缓存管理方法、装置、介质及设备 | |
CN109857723B (zh) | 基于可扩容数据库集群的动态数据迁移方法及相关设备 | |
CN110837409A (zh) | 一种定时执行任务的方法和*** | |
EP3937022B1 (en) | Method and apparatus of monitoring interface performance of distributed application, device and storage medium | |
CN109947729B (zh) | 一种实时数据分析方法及装置 | |
CN111797091A (zh) | 数据库中数据查询的方法、装置、电子设备和存储介质 | |
CN110955665A (zh) | 缓存查询方法、装置和电子设备 | |
CN112685499A (zh) | 一种工作业务流的流程数据同步方法、装置及设备 | |
CN113885780A (zh) | 数据同步方法、装置、电子设备、***和存储介质 | |
CN111752945A (zh) | 一种基于容器和层次模型的时序数据库数据交互方法和*** | |
CN110888847B (zh) | 一种回收站***及文件回收方法 | |
CN116701413A (zh) | 主数据处理方法及装置 | |
CN112115206A (zh) | 一种处理对象存储元数据的方法和装置 | |
CN114238390A (zh) | 数据仓库优化方法、装置、设备及存储介质 | |
CN114945026A (zh) | 数据处理方法、装置和*** | |
CN115794876A (zh) | 针对业务数据包的分片处理方法、装置、设备及存储介质 | |
CN109766363B (zh) | 流式数据处理方法、***、电子设备及存储介质 | |
CN112685557A (zh) | 可视化信息资源管理方法及装置 | |
CN117478535B (zh) | 一种日志存储的方法和装置 | |
CN117648297B (zh) | 基于对象存储小文件离线合并方法、***、设备及介质 | |
CN116301663B (zh) | 一种数据存储方法、装置及主机 | |
US11294853B1 (en) | Archiver for data stream service | |
CN117420944A (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 |