CN115994122A - 快速缓存信息的方法、系统、设备及储存介质 - Google Patents
快速缓存信息的方法、系统、设备及储存介质 Download PDFInfo
- Publication number
- CN115994122A CN115994122A CN202310293962.XA CN202310293962A CN115994122A CN 115994122 A CN115994122 A CN 115994122A CN 202310293962 A CN202310293962 A CN 202310293962A CN 115994122 A CN115994122 A CN 115994122A
- Authority
- CN
- China
- Prior art keywords
- cache
- file
- memory
- newly added
- cache file
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 74
- 230000015654 memory Effects 0.000 claims abstract description 191
- 238000013507 mapping Methods 0.000 claims abstract description 40
- 238000012545 processing Methods 0.000 abstract description 6
- 230000006870 function Effects 0.000 description 51
- 238000004590 computer program Methods 0.000 description 13
- 230000008569 process Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 11
- 238000001514 detection method Methods 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 7
- 238000011156 evaluation Methods 0.000 description 5
- 238000007726 management method Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000004806 packaging method and process Methods 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- 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
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种快速缓存信息的方法、系统、设备及储存介质,所述方法包括:初始化缓存模块;当检测到有操作时,对操作进行判断;当操作为新增文件时,判断新增文件的缓存路径是否有效;当有效时,判断新增文件的缓存名称是否有效;当有效时,判断新增文件是否存在已序列化至本地的缓存文件;其中,当存在时,通过内存映射加载缓存文件;当不存在时,创建空缓存文件,并通过内存映射加载缓存文件;以及判断缓存文件是否存在缓存数据;其中,当存在时,初始化缓存数据,并将缓存数据反序列化至哈希表;将反序列化至哈希表的缓存数据反序列化至内存池。通过本公开的处理方案,在兼容了多种CPU指令集及操作系统的同时,保证缓存的正确性以及效率。
Description
技术领域
本发明涉及数据处理技术领域,特别是涉及一种快速缓存信息的方法、系统、设备及储存介质。
背景技术
随着计算机技术不断发展,软件运行速度提升,运行过程中依赖数据量逐渐增大,对于加快数据存取速度,提升数据使用效率的需求逐渐增加。越来越多的软件系统期望将部分软件常用数据,存放于一种能够被快速检索的位置,提升数据使用效率。
然而由于计算机操作系统不断涌现,市面上也有多种CPU类型,操作系统百花齐放,呈现一种齐头并进的形式。目前没有一种解决方案,可以同时兼容多操作系统,多种CPU指令集,从而导致部分软件无法适配,制约某些场景的发展。
随着手机的普及更是加速了计算机技术的发展速度。越来越多的服务于各行各业以及生活的软件也随之出现,在大型服务项目、手机、浏览器、计算机软件中,越来越需求降低资源消耗,提高运行效率。
各种操作系统厂商,大型软件厂商越来越迫切的需求一种能够跨平台,兼容多种指令集,高效,快速的缓存技术,用于解决软件效率瓶颈问题。
现有技术中,对于大型web服务而言,可以使用文件型数据库;对于大型软件而言,可以使用内存型数据库。
上述的数据缓存方法,虽可以在一定程度上对数据进行缓存,但是在实际使用时却发现其方法中还存在有若干缺点,因未能达到最佳的使用效果,而其缺点可归纳如下:
针对其他文件型和内存型缓存方案兼容性差、系统资源消耗高、适配周期长、无法兼容多种操作系统以及指令集。
由此可见,上述现有的数据缓存方法在使用上,显然仍存在有不便与缺陷,而亟待加以进一步改进。如何能创设一种新的数据缓存方法,成为当前业界急需改进的目标。
发明内容
有鉴于此,本公开实施例提供一种快速缓存信息的方法,至少部分解决现有技术中存在的问题。
第一方面,本公开实施例提供了一种快速缓存信息的方法,所述方法包括以下步骤:
初始化缓存模块;
当检测到有操作时,对所述操作进行判断;其中,当所述操作为新增缓存文件时,判断所述新增缓存文件的缓存路径是否有效;以及
当所述新增缓存文件的缓存路径有效时,判断所述新增缓存文件的缓存名称是否有效;以及
当所述新增缓存文件的缓存名称有效时,判断所述新增缓存文件是否存在已序列化至本地的缓存文件;其中,当所述新增缓存文件存在已序列化至本地的缓存文件时,通过内存映射加载所述缓存文件;当所述新增缓存文件不存在已序列化至本地的缓存文件时,创建空缓存文件,并通过内存映射加载所述缓存文件;以及
判断所述缓存文件是否存在缓存数据;其中,当所述缓存文件存在缓存数据时,初始化所述缓存数据,并将所述缓存数据反序列化至哈希表;
将所述反序列化至哈希表的所述缓存数据反序列化至内存池。
根据本公开实施例的一种具体实现方式,所述判断所述缓存文件是否存在缓存数据,还包括以下步骤:当所述缓存文件不存在缓存数据时,创建空哈希表和内存池。
根据本公开实施例的一种具体实现方式,所述当检测到有操作时,对所述操作进行判断,还包括以下步骤:
当所述操作不为新增缓存文件时,从系统获取所述操作文件信息的内存映射,并判断是否存在所述操作文件信息的内存映射文件;其中
当存在所述操作文件信息的内存映射文件时,初始化所述缓存数据,并将所述缓存数据反序列化至哈希表;以及将所述反序列化至哈希表的所述缓存数据反序列化至内存池;
当不存在内存映射文件时,将所述操作文件信息反序列化至哈希表;以及
将所述反序列化至哈希表的所述缓存数据反序列化至内存池。
根据本公开实施例的一种具体实现方式,所述方法还包括:
当所述新增缓存文件的缓存路径无效时,结束操作;
当所述新增缓存文件的缓存名称无效时,结束操作。
根据本公开实施例的一种具体实现方式,所述操作包括增加缓存、更新缓存、删除缓存、修改缓存和查询缓存中的至少一项。
根据本公开实施例的一种具体实现方式,所述方法还包括:将跨平台的文件单独封装成库。
根据本公开实施例的一种具体实现方式,所述方法还包括以下步骤:
当所述初始化缓存模块完成时,分配默认大小的内存地址空间作为内存池;
将连续的内存地址空间划分为可分配内存区域和管理内存区域。
第二方面,本公开实施例提供了一种快速缓存信息的系统,所述系统包括:
初始化模块,被配置用于初始化缓存模块;
判断模块,被配置用于当检测到有操作时,对所述操作进行判断;其中,当所述操作为新增缓存文件时,判断所述新增缓存文件的缓存路径是否有效;以及
当所述新增缓存文件的缓存路径有效时,判断所述新增缓存文件的缓存名称是否有效;以及
当所述新增缓存文件的缓存名称有效时,判断所述新增缓存文件是否存在已序列化至本地的缓存文件;其中,当所述新增缓存文件存在已序列化至本地的缓存文件时,通过内存映射加载所述缓存文件;当所述新增缓存文件不存在已序列化至本地的缓存文件时,创建空缓存文件,并通过内存映射加载所述缓存文件;以及
判断所述缓存文件是否存在缓存数据;其中,当所述缓存文件存在缓存数据时,初始化所述缓存数据,并将所述缓存数据反序列化至哈希表;
储存模块,被配置用于将所述反序列化至哈希表的所述缓存数据反序列化至内存池。
第三方面,本公开实施例还提供了一种电子设备,该电子设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有能够被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行时,使所述至少一个处理器前述第一方面或第一方面的任一实现方式中的任一项所述的快速缓存信息的方法。
第四方面,本公开实施例还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令当由至少一个处理器执行时使所述至少一个处理器执行前述第一方面或第一方面的任一实现方式中的快速缓存信息的方法。
第五方面,本公开实施例还提供了一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使该计算机执行前述第一方面或第一方面的任一实现方式中的快速缓存信息的方法。
本公开实施例中的快速缓存信息的方法,通过封装跨平台模块、快速检索技术以及多桶式存储技术等技术,可以解决兼容性问题,同时可以有效地利用磁盘快速缓存数据,快速存取数据,降低内存使用率以及CPU利用率并能保证数据存储的有效性以及存取数据的效率,快速形成效率高,准确率高的缓存数据。
附图说明
上述仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,以下结合附图与具体实施方式对本发明作进一步的详细说明。
图1为本公开实施例提供的一种快速缓存信息的方法流程示意图;
图2为本公开实施例提供的一种快速缓存信息的方法的功能模块示意图;
图3为本公开实施例提供的一种快速缓存信息的方法流程框图;
图4为本公开实施例提供的一种内部的交互流程示意图;
图5为本公开实施例提供的一种快速缓存信息的系统结构示意图;以及
图6为本公开实施例提供的电子设备示意图。
具体实施方式
下面结合附图对本公开实施例进行详细描述。
以下通过特定的具体实例说明本公开的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本公开的其他优点与功效。显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。本公开还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本公开的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
需要说明的是,下文描述在所附权利要求书的范围内的实施例的各种方面。应显而易见,本文中所描述的方面可体现于广泛多种形式中,且本文中所描述的任何特定结构及/或功能仅为说明性的。基于本公开,所属领域的技术人员应了解,本文中所描述的一个方面可与任何其他方面独立地实施,且可以各种方式组合这些方面中的两者或两者以上。举例来说,可使用本文中所阐述的任何数目个方面来实施设备及/或实践方法。另外,可使用除了本文中所阐述的方面中的一或多者之外的其他结构及/或功能性实施此设备及/或实践此方法。
另外,在以下描述中,提供具体细节是为了便于透彻理解实例。然而,所属领域的技术人员将理解,可在没有这些特定细节的情况下实践所述方面。
本发明实施例提供了一种快速缓存信息的方法,通过使用C++语言进行编写,可以解决操作系统兼容性,以及多CPU指令集间的兼容性问题,根据C++发布的相关标准,将C++标准定为C++11标准,可以避免部分操作系统之间的兼容性问题。将需要跨平台单独封装的内存管理以及文件操作,封装成库,统一管理,可以监控管理内存,并解决文件系统平台兼容性问题。
具体的,封装内存管理模块基于C++语言实现。
通过封装不同操作系统下的内存操作函数,统一操作接口,在内存操作过程中记录内存操作信息。
通过调用对应系统下的内存操作函数进行内存申请,返回申请出来的内存地址,对申请出来的内存地址进行大小计算等操作,释放申请出来的内存。
模块实现并导出内存申请函数(MemoryAlloc),内存重新申请函数(MemoryRealloc),计算内存大小函数(MemorySizeOf),内存释放函数(MemoryFree)。
相关导出函数内部通过调用不同操作系统下的对应函数实现:
在申请内存时,多申请一些内存,用于存放内存标记,记录相关内存操作信息,包括被操作内存地址,被操作内存大小。当内存申请完成时,将内存操作信息添加在申请出来的内存头部,并将去掉存放内存操作信息以后的内存返回给申请者。
在释放内存时,首先根据被释放内存找到存有被释放内存信息的头部,之后根据头部保存的信息释放内存。
在Windows下调用HeapAlloc,HeapRealloc,HeapFree函数实现。
在Linux系统下调用malloc,realloc,free函数实现。
通过计算分配内存时添加的内存标记中的数据记录来计算内存大小。
封装文件操作模块基于C++语言实现。
通过封装不同操作系统下的内存操作函数,统一操作接口,对外提供打开文件(FileOpen),判断文件是否存在(FileIsExist),遍历文件夹(FolderEnum),读取文件(FileRead),写入文件(FileWrite),设置文件操作位置(FileSeek)等功能。
相关导出函数内部通过调用不同操作系统下的对应函数实现:
在Windows下调用CreateFile,ReadFile,WriteFile,SetEndOfFile函数实现
在Linux下调用fopen,fread,fwrite,fseek函数实现。
图1为本公开实施例提供的快速缓存信息的方法流程的示意图。
图2为本公开实施例提供的一种快速缓存信息的方法的功能模块示意图;
图3为与图1对应的快速缓存信息的方法流程框图。
如图2所示,本发明提出的快速缓存信息的方法包含5个功能模块。
1、缓存检测功能提供部分(checking_result_Cache)是整个模块的入口模块。外部程序任意用户(any_user)通过缓存检测功能提供部分(checking_result_Cache)操作缓存,进行增加、更新、删除、修改、查询工作。
2、跨平台文件操作功能提供部分封装跨平台的文件操作API(应用程序编程接口)。
3、缓存检测功能提供部分(checking_result_Cache)用于使用跨平台文件操作功能提供部分对文件进行操作,包括打开文件、关闭文件、向文件中写入数据、获取文件信息、计算文件哈希等一系列功能。
3、内存映射文件功能提供部分(memory_mapping_file)用于封装跨平台的内存映射文件API。缓存检测功能提供部分(checking_result_Cache)使用内存映射文件功能提供部分进行内存映射文件操作,包括创建、写入、读取、创建文件映射等一系列功能。
4、序列化内存池功能提供部分(serializable_memory_pool)用于实现对内存映射文件功能提供部分所映射的地址空间的内存管理,包括从连续内存反序列化、从连续内存中创建新的内存池、销毁内存池、提供内存块、回收内存块等等一系列功能。支持将相关数据序列化或者反序列化,针对相关数据,动态分配或者销毁实际使用的内存块。
5、序列化哈希桶功能提供部分(serializable_hash_table)用于实现一个可序列化反序列化的hash(哈希)表。包括从连续内存反序列化,从连续内存中创建新的哈希表、销毁哈希表、查询、存储、遍历元素等一系列功能、数据特征管理部分,通过计算数据特征,整理成哈希表,将哈希表,私有数据、桶、内存块存在于连续内存上,依据实际使用场合,可以将哈希表中的元素存放于桶中,也可根据实际使用情况,动态加载卸载内存中的桶。
更具体地,如图1所示,在步骤S110处,初始化缓存模块。
根据运行的实际情况,进行缓存模块的初始化。
更具体地,通过以下步骤进行缓存初始化:
步骤1:初始化Cache(缓存)环境检测。
首先检查缓存目标路径是否合法,如果不合法,或者对应路径无法被创建,则初始化失败,如果缓存目标文件已经存在,则校验缓存目标文件格式,检测其是否为合法文件格式,如果缓存目标路径合法,并且缓存目标文件格式合法,则初始化环境检测完成,继续执行流程。
步骤2:创建新缓存,加载已被序列化的数据
如果缓存目标文件不存在,则需要创建缓存文件,首先在磁盘中创建对应文件。之后将该文件映射至内存中,进程获取并保存该文件实例,用于后续使用。
步骤3:反序列化哈希桶
如果磁盘中已有序列化好的Cache Data(缓存文件),需要加载该缓存文件,将其映射至一段连续的内存中,通过解析缓存文件,在内存中构建哈希表,将缓存文件中数据的概要信息缓存至哈希表中,为快速索引缓存文件提供先决条件。
将映射到内存中的哈希桶数据反序列化,
步骤4:反序列化内存池。
将缓存文件中的部分数据反序列化,并以存放于一段连续的内存中,并提供内存映射文件,以及初始化对应的桶锁。
在本发明实施例中,所述方法还包括以下步骤:当所述初始化缓存模块完成时,分配默认大小的内存地址空间作为内存池;将连续的内存地址空间划分为可分配内存区域和管理内存区域。
更具体地,缓存模块初始化完成时,分配默认大小的内存地址空间作为内存池,用于后续内存管理;并将连续的内存地址空间划分为可分配内存区域和管理内存区域的结构2部分。
其中,可分配内存区域被划分为一系列内存页。每个内存页中包含相同大小的内存块,比如,16字节、32字节、64字节……4096字节,被聚集到一系列的内存页中,且同一内存页中的内存块的大小都相等。
每次获取内存时,实际上获得的是一个能够满足所需空间的最小内存块。比如,申请26字节内存地址空间,实际上获得的是一个32字节的内存块。
一个管理内存的数据结构占据一个内存页面,并管理若干个内存页面,这些被管理的内存页面就是可分配内存区域。
每一个管理内存的数据结构的主要功能是标明每个内存页的状态:该内存页中内存块大小、已分配的内存块个数、该内存页中空闲内存块链表的地址偏移、下一个相同大小内存块的地址偏移等等。其中,链表的元素占据一个完整的内存块,但其中仅仅包含下一个元素的地址偏移。
上述“地址偏移”都是相对于当前连续内存中的起始地址.
更具体地,接下来转到步骤S120。
在步骤S120处,当检测到有操作时,对所述操作进行判断;其中,当所述操作为新增缓存文件时,判断所述新增缓存文件的缓存路径是否有效;
当所述操作不为新增缓存文件时,从系统获取所述操作文件信息的内存映射,并判断是否存在所述操作文件信息的内存映射文件;其中当存在所述操作文件信息的内存映射文件时,初始化所述缓存数据,并将所述缓存数据反序列化至哈希表;以及将所述反序列化至哈希表的所述缓存数据反序列化至内存池;当不存在内存映射文件时,将所述操作文件信息反序列化至哈希表;以及将所述反序列化至哈希表的所述缓存数据反序列化至内存池。
在本发明实施例中,所述方法还包括:当所述新增缓存文件的缓存路径无效时,结束操作;
在本发明实施例中,所述操作包括增加缓存、更新缓存、删除缓存、修改缓存和查询缓存中的至少一项。
更具体地,如图4所示,增加缓存同时承担着更新缓存的功能,缓存检测功能提供部分(checking_file_Cache)首先进行相关校验,包括新增缓存的有效性校验、当前缓存中是否已经存在等,相关校验通过后,根据相关检验结果以及处理数据,将相关信息数据,利用序列化哈希桶功能提供部分以及序列化内存池功能提供部分将数据保存至相关哈希桶和内存映射文件中。
查询缓存,缓存检测功能提供部分(checking_file_Cache)将根据被查询缓存关键字,利用序列化哈希桶功能提供部分从哈希桶进行查询,找到相关数据对应的数据地址后,再利用序列化内存池功能提供部分从对应内存映射文件的地址中获取到相关数据,并进行返回。
删除缓存,缓存检测功能提供部分(checking_file_Cache)首先进行相关校验,包括需要被删除的缓存的有效性校验、当前缓存中是否已经存在等,相关校验通过后,利用序列化哈希桶功能提供部分、序列化内存池功能提供部分将相关数据从哈希桶和内存映射文件中删除。
序列化缓存,由于序列化内存池功能提供部分管理着内存映射文件功能提供部分映射的内存映射文件,并且相关操作是直接使用序列化内存池功能提供部分进行操作的,故能够保证序列化内存池功能提供部分操作的内存与内存映射文件功能提供部分中的数据是关联并且同步的。在序列化时,直接将整个内存映射文件功能提供部分的内存映射文件,利用跨平台文件操作功能提供部分序列化至本地。
接下来转到步骤S130。
在步骤S130处,当所述新增缓存文件的缓存路径有效时,判断所述新增缓存文件的缓存名称是否有效。
接下来转到步骤S140。
在步骤S140处,当所述新增缓存文件的缓存名称有效时,判断所述新增缓存文件是否存在已序列化至本地的缓存文件;其中,当所述新增缓存文件存在已序列化至本地的缓存文件时,通过内存映射加载所述缓存文件;当所述新增缓存文件不存在已序列化至本地的缓存文件时,创建空缓存文件,并通过内存映射加载所述缓存文件。
更具体地,首先检测是否存在相关内存映射文件,如果内存映射文件存在,则直接使用内存映射文件进行初始化,首先加载并初始化内存映射文件中的相关数据,之后将相关数据反序列化至相关模块中,包括反序列化哈希桶、反序列化内存池。
如果不存在相关内存映射文件,则尝试使用已经序列化到本地的数据进行初始化,首先加载并初始化本地已存在已经序列化好的缓存文件,之后将相关数据反序列化至相关模块中,包括反序列化哈希桶、反序列化内存池。
如果本地没有已经序列化好的缓存文件,则创建空的缓存数据,模拟一个序列化至本地的缓存文件,该文件中相关数据为空数据,之后利用该空的缓存数据信息进行初始化流程。在将相关数据反序列化至相关模块时,如果缓存数据为空数据,则创建新的空的哈希桶和空的内存池,完成初始化。
在本发明实施例中。当所述新增缓存文件的缓存名称无效时,结束操作。
接下来转到步骤S150。
在步骤S150处,判断所述缓存文件是否存在缓存数据;其中,当所述缓存文件存在缓存数据时,初始化所述缓存数据,并将所述缓存数据反序列化至哈希表。
当所述缓存文件不存在缓存数据时,创建空哈希表和内存池。
接下来转到步骤S160。
在步骤S160处,将所述反序列化至哈希表的所述缓存数据反序列化至内存池。
本发明提出的快速缓存信息的方法可以有效地解决对大量数据存取慢,查找慢,序列化慢的问题,本发明中通过步骤S120采集数据特征值并整理,桶式管理数据的方式,可以快速从缓存文件中存取数据,序列化数据至磁盘中,并保证数据的有效性,以满足不同场景对缓存使用的需求。且同时适应Windows和Linux操作系统,兼容各种CPU指令集,包括x86、aarch64、mips等,提供一种多进程间可以共享的缓存,发明的关键点是缓存信息快速检索原理以及缓存信息存储原理。
综上所述,本发明具有以下优点:
1、兼容了多种CPU指令集,兼容各种操作系统;
2、采用哈希桶等快速检索算法,提升了检索效率,优化了数据存储结构;
3、支持多进程并发访问缓存,保证缓存的正确性以及效率;
4、将存储的相关缓存保存至磁盘,同时也能从磁盘加载这些信息。
图5示出了本发明提供的快速缓存信息的系统500,包括初始化模块510、判断模块520和储存模块530。
初始化模块510用于初始化缓存模块;
判断模块520用于当检测到有操作时,对所述操作进行判断;其中,当所述操作为新增缓存文件时,判断所述新增缓存文件的缓存路径是否有效;以及
当所述新增缓存文件的缓存路径有效时,判断所述新增缓存文件的缓存名称是否有效;以及
当所述新增缓存文件的缓存名称有效时,判断所述新增缓存文件是否存在已序列化至本地的缓存文件;其中,当所述新增缓存文件存在已序列化至本地的缓存文件时,通过内存映射加载所述缓存文件;当所述新增缓存文件不存在已序列化至本地的缓存文件时,创建空缓存文件,并通过内存映射加载所述缓存文件;以及
判断所述缓存文件是否存在缓存数据;其中,当所述缓存文件存在缓存数据时,初始化所述缓存数据,并将所述缓存数据反序列化至哈希表;
储存模块530用于将所述反序列化至哈希表的所述缓存数据反序列化至内存池。
参见图6,本公开实施例还提供了一种电子设备60,该电子设备包括:
至少一个处理器;以及,
与该至少一个处理器通信连接的存储器;其中,
该存储器存储有可被该至少一个处理器执行的指令,该指令被该至少一个处理器执行,以使该至少一个处理器能够执行前述方法实施例中的快速缓存信息的方法。
本公开实施例还提供了一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储计算机指令,该计算机指令用于使该计算机执行前述方法实施例中的快速缓存信息的方法。
本公开实施例还提供了一种计算机程序产品,该计算机程序产品包括存储在非暂态计算机可读存储介质上的计算程序,该计算机程序包括程序指令,当该程序指令被计算机执行时,使该计算机执行前述方法实施例中的快速缓存信息的方法。
下面参考图6,其示出了适于用来实现本公开实施例的电子设备60的结构示意图。本公开实施例中的电子设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图6示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图6所示,电子设备60可以包括处理装置(例如中央处理器、图形处理器等)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储装置608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有电子设备60操作所需的各种程序和数据。处理装置601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
通常,以下装置可以连接至I/O接口605:包括例如触摸屏、触摸板、键盘、鼠标、图像传感器、麦克风、加速度计、陀螺仪等的输入装置606;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置607;包括例如磁带、硬盘等的存储装置608;以及通信装置609。通信装置609可以允许电子设备60与其他设备进行无线或有线通信以交换数据。虽然图中示出了具有各种装置的电子设备60,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置609从网络上被下载和安装,或者从存储装置608被安装,或者从ROM 602被安装。在该计算机程序被处理装置601执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:获取至少两个网际协议地址;向节点评价设备发送包括所述至少两个网际协议地址的节点评价请求,其中,所述节点评价设备从所述至少两个网际协议地址中,选取网际协议地址并返回;接收所述节点评价设备返回的网际协议地址;其中,所获取的网际协议地址指示内容分发网络中的边缘节点。
或者,上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:接收包括至少两个网际协议地址的节点评价请求;从所述至少两个网际协议地址中,选取网际协议地址;返回选取出的网际协议地址;其中,接收到的网际协议地址指示内容分发网络中的边缘节点。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定,例如,第一获取单元还可以被描述为“获取至少两个网际协议地址的单元”。
应当理解,本公开的各部分可以用硬件、软件、固件或它们的组合来实现。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种快速缓存信息的方法,其特征在于,所述方法包括以下步骤:
初始化缓存模块;
当检测到有操作时,对所述操作进行判断;其中,当所述操作为新增缓存文件时,判断所述新增缓存文件的缓存路径是否有效;以及
当所述新增缓存文件的缓存路径有效时,判断所述新增缓存文件的缓存名称是否有效;以及
当所述新增缓存文件的缓存名称有效时,判断所述新增缓存文件是否存在已序列化至本地的缓存文件;其中,当所述新增缓存文件存在已序列化至本地的缓存文件时,通过内存映射加载所述缓存文件;当所述新增缓存文件不存在已序列化至本地的缓存文件时,创建空缓存文件,并通过内存映射加载所述缓存文件;以及
判断所述缓存文件是否存在缓存数据;其中,当所述缓存文件存在缓存数据时,初始化所述缓存数据,并将所述缓存数据反序列化至哈希表;
将所述反序列化至哈希表的所述缓存数据反序列化至内存池。
2.根据权利要求1所述的快速缓存信息的方法,其特征在于,所述判断所述缓存文件是否存在缓存数据,还包括以下步骤:当所述缓存文件不存在缓存数据时,创建空哈希表和内存池。
3.根据权利要求1所述的快速缓存信息的方法,其特征在于,所述当检测到有操作时,对所述操作进行判断,还包括以下步骤:
当所述操作不为新增缓存文件时,从内存池获取存有包含所述操作文件信息的内存映射,并判断是否存在存有包含所述操作文件信息的内存映射文件;其中
当存在所述存有包含所述操作文件信息的内存映射文件时,初始化所述缓存数据,并将所述缓存数据反序列化至哈希表;以及将所述反序列化至哈希表的所述缓存数据反序列化至内存池;
当不存在内存映射文件时,将所述操作文件信息反序列化至哈希表;以及
将所述反序列化至哈希表的所述缓存数据反序列化至内存池。
4.根据权利要求1所述的快速缓存信息的方法,其特征在于,所述方法还包括:
当所述新增缓存文件的缓存路径无效时,结束操作;
当所述新增缓存文件的缓存名称无效时,结束操作。
5.根据权利要求1所述的快速缓存信息的方法,其特征在于,所述操作包括新增缓存文件、更新缓存文件、删除缓存文件、修改缓存文件和查询缓存文件中的至少一项。
6.根据权利要求1所述的快速缓存信息的方法,其特征在于,所述方法还包括:将跨平台的文件单独封装成库。
7.根据权利要求1所述的快速缓存信息的方法,其特征在于,所述方法还包括以下步骤:
当所述初始化缓存模块完成时,分配默认大小的内存地址空间作为内存池;
将连续的所述内存地址空间划分为可分配内存区域和管理内存区域。
8.一种快速缓存信息的系统,其特征在于,所述系统包括:
初始化模块,被配置用于初始化缓存模块;
判断模块,被配置用于当检测到有操作时,对所述操作进行判断;其中,当所述操作为新增缓存文件时,判断所述新增缓存文件的缓存路径是否有效;以及
当所述新增缓存文件的缓存路径有效时,判断所述新增缓存文件的缓存名称是否有效;以及
当所述新增缓存文件的缓存名称有效时,判断所述新增缓存文件是否存在已序列化至本地的缓存文件;其中,当所述新增缓存文件存在已序列化至本地的缓存文件时,通过内存映射加载所述缓存文件;当所述新增缓存文件不存在已序列化至本地的缓存文件时,创建空缓存文件,并通过内存映射加载所述缓存文件;以及
判断所述缓存文件是否存在缓存数据;其中,当所述缓存文件存在缓存数据时,初始化所述缓存数据,并将所述缓存数据反序列化至哈希表;
储存模块,被配置用于将所述反序列化至哈希表的所述缓存数据反序列化至内存池。
9.一种电子设备,其特征在于,该电子设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有能够被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行时,使所述至少一个处理器执行如权利要求1至7中的任一项所述的快速缓存信息的方法。
10.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令当由至少一个处理器执行时使所述至少一个处理器执行如权利要求1至7中的任一项所述的快速缓存信息的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310293962.XA CN115994122B (zh) | 2023-03-24 | 2023-03-24 | 快速缓存信息的方法、系统、设备及储存介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310293962.XA CN115994122B (zh) | 2023-03-24 | 2023-03-24 | 快速缓存信息的方法、系统、设备及储存介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115994122A true CN115994122A (zh) | 2023-04-21 |
CN115994122B CN115994122B (zh) | 2023-06-06 |
Family
ID=85995411
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310293962.XA Active CN115994122B (zh) | 2023-03-24 | 2023-03-24 | 快速缓存信息的方法、系统、设备及储存介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115994122B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116501700A (zh) * | 2023-06-29 | 2023-07-28 | 深圳瑞信建筑科技有限公司 | 一种app格式化文件离线存储方法、装置、设备及存储介质 |
CN117195240A (zh) * | 2023-11-02 | 2023-12-08 | 西安热工研究院有限公司 | 可信dcs上位机数据组态验证及发布方法和系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101520797A (zh) * | 2009-02-11 | 2009-09-02 | 国电南瑞科技股份有限公司 | 电力系统跨平台大数据文件高速并发存取方法 |
CN102737064A (zh) * | 2011-04-15 | 2012-10-17 | 腾讯科技(深圳)有限公司 | 文件缓存方法及装置 |
US20170118300A1 (en) * | 2015-10-22 | 2017-04-27 | Oracle International Corporation | System and method for providing distributed caching in a transactional processing environment |
CN108810041A (zh) * | 2017-04-27 | 2018-11-13 | 华为技术有限公司 | 一种分布式缓存系统的数据写入及扩容方法、装置 |
CN114116606A (zh) * | 2021-12-02 | 2022-03-01 | 北京江民新科技术有限公司 | 针对windows全系统的文件保护方法及系统 |
-
2023
- 2023-03-24 CN CN202310293962.XA patent/CN115994122B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101520797A (zh) * | 2009-02-11 | 2009-09-02 | 国电南瑞科技股份有限公司 | 电力系统跨平台大数据文件高速并发存取方法 |
CN102737064A (zh) * | 2011-04-15 | 2012-10-17 | 腾讯科技(深圳)有限公司 | 文件缓存方法及装置 |
US20170118300A1 (en) * | 2015-10-22 | 2017-04-27 | Oracle International Corporation | System and method for providing distributed caching in a transactional processing environment |
CN108810041A (zh) * | 2017-04-27 | 2018-11-13 | 华为技术有限公司 | 一种分布式缓存系统的数据写入及扩容方法、装置 |
CN114116606A (zh) * | 2021-12-02 | 2022-03-01 | 北京江民新科技术有限公司 | 针对windows全系统的文件保护方法及系统 |
Non-Patent Citations (2)
Title |
---|
刘富贵: "基于缓存的存储系统读I/O优化方案研究", 《中国优秀硕士论文电子期刊网》 * |
王磊 等: "多主多从Stackelberg博弈下的边缘缓存资源分配算法", 《信号处理》, vol. 35, no. 4, pages 574 - 581 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116501700A (zh) * | 2023-06-29 | 2023-07-28 | 深圳瑞信建筑科技有限公司 | 一种app格式化文件离线存储方法、装置、设备及存储介质 |
CN116501700B (zh) * | 2023-06-29 | 2023-09-08 | 深圳瑞信建筑科技有限公司 | 一种app格式化文件离线存储方法、装置、设备及存储介质 |
CN117195240A (zh) * | 2023-11-02 | 2023-12-08 | 西安热工研究院有限公司 | 可信dcs上位机数据组态验证及发布方法和系统 |
CN117195240B (zh) * | 2023-11-02 | 2024-05-28 | 西安热工研究院有限公司 | 可信dcs上位机数据组态验证及发布方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN115994122B (zh) | 2023-06-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115994122B (zh) | 快速缓存信息的方法、系统、设备及储存介质 | |
US11157449B2 (en) | Managing data in storage according to a log structure | |
US10140461B2 (en) | Reducing resource consumption associated with storage and operation of containers | |
CN110865888B (zh) | 一种资源加载方法、装置、服务器及存储介质 | |
CN107870728B (zh) | 用于移动数据的方法和设备 | |
US9298377B2 (en) | Techniques for reducing read I/O latency in virtual machines | |
US8176142B2 (en) | Shared JAVA jar files | |
US7558804B1 (en) | Method, apparatus, and computer-readable medium for space-efficient storage of variables in a non-volatile computer memory | |
US9507613B2 (en) | Methods and apparatus for dynamically preloading classes | |
CN111949605A (zh) | 用于实现文件系统的方法、设备和计算机程序产品 | |
US9928000B2 (en) | Memory mapping for object-based storage devices | |
US11016886B2 (en) | Multi-ring shared, traversable, and dynamic advanced database | |
US9389997B2 (en) | Heap management using dynamic memory allocation | |
CN107408132B (zh) | 跨越多个类型的存储器移动分层数据对象的方法和系统 | |
CN111562929A (zh) | 补丁文件的生成方法、装置、设备及存储介质 | |
CN110489425B (zh) | 一种数据访问方法、装置、设备及存储介质 | |
CN117112215A (zh) | 内存分配方法、设备及存储介质 | |
US7681009B2 (en) | Dynamically updateable and moveable memory zones | |
CN115113798B (zh) | 一种应用于分布式存储的数据迁移方法、系统及设备 | |
CN114201269A (zh) | 内存换页方法、系统及存储介质 | |
US8041742B1 (en) | Method, system, and apparatus for providing generic database services within an extensible firmware interface environment | |
CN114756180B (zh) | 覆盖写入数据块分配方法、装置、计算机设备及存储介质 | |
US12008261B2 (en) | Method and device for accessing memory | |
CN114625433B (zh) | 应用程序启动方法和系统 | |
KR20070030041A (ko) | 페이징 기법을 이용한 이동통신 단말기의 메모리 관리 방법 |
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 |