CN110297673B - 内存数据优化加载的方法、存储介质 - Google Patents
内存数据优化加载的方法、存储介质 Download PDFInfo
- Publication number
- CN110297673B CN110297673B CN201910534830.5A CN201910534830A CN110297673B CN 110297673 B CN110297673 B CN 110297673B CN 201910534830 A CN201910534830 A CN 201910534830A CN 110297673 B CN110297673 B CN 110297673B
- Authority
- CN
- China
- Prior art keywords
- data
- cache
- time point
- snapshot file
- standby
- 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
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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种内存数据优化加载的方法、存储介质,发明包括:服务端中的备用缓存同步备份主缓存的数据;定时读取备用缓存的数据,并以快照文件形式存储,同时记录存储时间;刷新主缓存数据时,读取最新时间点的快照文件,并从数据库中获取以所述最新时间点为起始,当前时间点为终止的数据记录;合并所述快照文件中的数据以及从数据库中获取的数据。本发明能够优化内存数据的加载方式,不仅能够确保在日常阶段整机运行的性能不受影响,而且还能提高加载速度和保证所加载数据的准确性和完整性。
Description
技术领域
本发明涉及内存数据处理领域,具体涉及内存数据优化加载的方法、存储介质。
背景技术
现有的很多业务系统或者软件中,存在着各种各样的数据,如一些配置信息或者一些经常使用到的数据信息等,又或者一些常用的重要数据等。面对这些经常使用到的数据,会有一个存储的地方。正常情况下,一般的系统会存放在一个统一的地方,比如说redis集群,或者zookeeper集群中。不过,这样一来就又引入了新的软件依赖,而很多的系统或者软件则直接放置这些重要信息在本地内存中,在每次系统启动时,一般是从数据库中查询出相关的信息并加载入本地内存中。
针对如上场景,当程序启动时,或者遇到重启、因为宕机断电或其他异常情况而需要程序重新加载数据至本地内存时,程序需要从数据库中一条条的加载相关数据,之后再次写入到本地内存中,当数据量较少情况下,也还可以接受该种方式,但当数据量较多,或者需要多次查询库表情况下,则会导致程序启动很缓慢,从而影响了整体使用功能。
因此,有必要对现有的内存数据加载方式进行优化,以克服上述问题。
发明内容
本发明所要解决的技术问题是:提供一种内存数据优化加载的方法、存储介质,保证整体运行稳定的同时,提高程序启动的速度和有效性。
为了解决上述技术问题,本发明采用的技术方案为:
一种内存数据优化加载的方法,包括:
服务端中的备用缓存同步备份主缓存的数据;
定时读取备用缓存的数据,并以快照文件形式存储,同时记录存储时间;
刷新主缓存数据时,读取最新时间点的快照文件,并从数据库中获取以所述最新时间点为起始,当前时间点为终止的数据记录;
合并所述快照文件中的数据以及从数据库中获取的数据。
本发明提供的另一个技术方案为:
一种计算机可读存储介质,其上存储有计算机程序,所述程序在被处理器执行时,能够实现上述一种内存数据优化加载的方法所包含的步骤。
本发明的有益效果在于:采用主备缓存机制,由备用缓存来执行快照文件的存储,有效减少主缓存卡顿概率,确保整机性能稳定;利用快照文件进行主缓存数据刷新,能显著提高启动效率;同时,以最新时间点的快照文件和最新时间点至当前时间点的数据记录作为基础,保证数据的完整性。本发明能够优化内存数据的加载方式,不仅能够确保在日常阶段整机运行的性能不受影响,而且还能提高加载速度和保证所加载数据的准确性和完整性。
附图说明
图1为本发明实施例一种内存数据优化加载的方法对应的系统构架示意图;
图2为本发明实施例一种内存数据优化加载的方法的流程示意图。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
本发明最关键的构思在于:采用主备缓存机制,由备用缓存来执行快照文件的存储;以最新时间点的快照文件和最新时间点至当前时间点的数据记录刷新主缓存数据。
请参照图1以及图2,本发明提供一种内存数据优化加载的方法,包括:
服务端中的备用缓存同步备份主缓存的数据;
定时读取备用缓存的数据,并以快照文件形式存储,同时记录存储时间;
刷新主缓存数据时,读取最新时间点的快照文件,并从数据库中获取以所述最新时间点为起始,当前时间点为终止的数据记录;
合并所述快照文件中的数据以及从数据库中获取的数据。
进一步地,还包括:
依据合并后得到的数据刷新主缓存和备用缓存。
由上述描述可知,同时结合数据库中存储的最新时间点至当前时间点的数据记录进行刷新,相较现有技术,能有效避免这期间数据记录的丢失,保证数据的完整性。
进一步地,所述服务端中的备用缓存同步备份主缓存的数据,具体为:
通过第一异步线程定时读取主缓存中的数据,并写入备份缓存中。
由上述描述可知,通过异步线程进行主备份数据同步,避免对主缓存的性能带来影响,从而减少主缓存卡顿的可能性。
进一步地,通过第二异步线程执行所述定时读取备用缓存的数据,并以快照文件形式存储,同时记录存储时间的步骤。
由上述描述可知,通过异步线程进行快照文件的生成和存储,不对主缓存提供服务带来影响,保证整机运行的稳定性。
本发明提供的另一个技术方案为:
一种计算机可读存储介质,其上存储有计算机程序,所述程序在被处理器执行时,能够实现上述一种内存数据优化加载的方法所包含的步骤。
从上述描述可知,对应本领域普通技术人员可以理解实现上述技术方案中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来实现的,所述的程序可存储于一计算机可读取的存储介质中,该程序在执行时,可包括如上述各方法的流程。所述程序在执行后,同样能获取各个方法对应的有益效果。
其中,所述的存储介质可以是磁盘、光碟、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
实施例一
请参照图1和图2,本实施例提供一种内存数据优化加载的方法,不仅能提高数据加载入内存的速度,从而提高程序的启动速率;而且能确保程序运行速度不受影响,以及所加载数据的完整性。
首先,请参阅图1,在服务端内部设置主缓存和备用缓存,且备用缓存内的数据与主缓存内的数据保持同步,备用缓存用来同步主缓存数据,起到备份作用。当客户端调用服务端接口,接口内部会从主缓存中读取数据,主缓存内数据也可以为服务端内部其他功能使用。
当主缓存内的数据变更时(比如说数据变动或者后台运维人员操作),程序只会先后进行主缓存内数据更新操作,以及数据库数据的变更操作。此时,主缓存内的数据已经正在提供查询服务了,而备用缓存数据的同步更新,将通过一个独立的异步线程来实现,由此避免对主缓存造成卡顿,特别是并发情况下影响主缓存的读取操作。因为旧有的程序一般都只有一个主缓存,而写入文件又较为耗时,因此当主缓存中进行快照备份时,是有卡顿的,将短暂的无法提供服务。其中,上述独立的异步线程(以下称为第一异步线程)实现主备用缓存数据同步的过程包括:第一异步线程依据预设的第一时间周期从主缓存中读取所有的数据或者变更的数据,写入备用缓存中。预设的第一时间周期可以依据需求灵活设定,如10-90s范围内。
在主备用缓存工作的同时,也有一个异步线程(以下称为第二异步线程)以定时任务的方式,定时从备用缓存读取其中的所有数据,再以序列化的方式写入快照日志文件中,并同时记录写入的时间。所述快照日志文件,表示对应某个时间点的一份最新的完整内存数据文件。所述写入的时间对应完整写入数据得到快照日志的时间,即快照日志的生成时间,也可以理解为以快照文件形式存储备用缓存当前所有数据的时间,如20190508_22这样的命名方式。优选地,直接以快照日志文件的生成时间为其文文件名称。可选地,所述定时的时间范围可以是30-60min之间,如每隔1小时生成一个快照文件,
当程序启动、重启或者其他异常情况需要刷新主缓存数据时,先从快照文件夹中读取最新时间点的快照文件,具体以文件流的形式,一次性读取文件数据即可;后续,以该时间点(最新时间点)为起始,当前时间点为终止为查询条件,查询数据库中的数据,获取对应查询条件的查询结果数据;然后,合并这两份数据(文件数据+查询结果数据),即最后需要加载入内存中的数据信息。
需要注意的是,所述最新时间点的快照文件,指的是快照文件夹中存储的所有快照文件中所记录的时间点最新(即最靠近当前时间)的一个快照文件。而还要获取所述查询结果数据,是因为若直接以最新时间点的快照文件中的数据作为更新数据,则将丢失“最新时间点”到当前时间点产生的这些数据记录,从而导致更新的数据不完整。
采用本实施例的内存数据优化加载方法,假设22点的时候生成一个快照文件,22点半启动了,则只需要读取22点的快照文件,外加数据库中最近半小时的数据,合并成一起,就是内存中最新的数据了。该方法不能不会给程序造成卡顿,而且还能明显提高程序的启动速度,同时保证数据加载的完整性。
实施例二
本实施例提供对应实施例一,提供一具体运用场景:
1、客户端调用服务端接口,接口需要从主缓存中读取字典列表数据,大概1000条左右;程序直接从主缓存中读取这1000条数据,并返回。
2、当前时刻为22点整,过了10分钟后,后台管理人员新增了100条字典数据,则程序会更新主程序内字典列表数据为1100条,同时更新对应数据库记录。
3、此时,程序中一个独立的异步线程,会每隔30秒定时读取主缓存中数据写入备用缓存中,以保证主备缓存数据一致。
4、另个独立的异步线程,会每隔1小时启动一次,主要任务为读取备用缓存中的数据,生成快照文件,文件名命名为20190508_22这样的命名方式。
5、当程序启动时,此时为22点30分,则程序先读取22点时生成的20190508_22快照文件;同时,从数据库中查询出22点到22点30分的更新数据信息,把两边的数据合并在一起,则为最终主缓存的信息,并写入主缓存中,加快启动速度。
实施例三
本实施例提供对应实施例一和实施例二,提供一种计算机可读存储介质,其上存储有计算机程序,所述程序在被处理器执行时,能够实现上述实施例一或实施例二所述的一种内存数据优化加载的方法所包含的步骤,具体的步骤内容在此不进行复述,详情请参阅实施例一或实施例二的记载。
综上所述,本发明提供的内存数据优化加载的方法、存储介质,不仅能实现内存数据的有效备份;而且能够提高内存数据的加载速度,从而提高程序的启动速率;进一步地,还能确保所加载数据的完整性;最后,能确保程序的日常运行速度不受影响,提高主缓存所提供服务的稳定性。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (5)
1.一种内存数据优化加载的方法,其特征在于,包括:
服务端中的备用缓存同步备份主缓存的数据;
定时读取备用缓存的数据,并以快照文件形式存储,同时记录存储时间;
刷新主缓存数据时,读取最新时间点的快照文件,并从数据库中获取以所述最新时间点为起始,当前时间点为终止的数据记录;
合并所述快照文件中的数据以及从数据库中获取的数据。
2.如权利要求1所述的一种内存数据优化加载的方法,其特征在于,还包括:
依据合并后得到的数据刷新主缓存和备用缓存。
3.如权利要求1所述的一种内存数据优化加载的方法,其特征在于,所述服务端中的备用缓存同步备份主缓存的数据,具体为:
通过第一异步线程定时读取主缓存中的数据,并写入备份缓存中。
4.如权利要求1所述的一种内存数据优化加载的方法,其特征在于,通过第二异步线程执行所述定时读取备用缓存的数据,并以快照文件形式存储,同时记录存储时间的步骤。
5.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序在被处理器执行时,能够实现上述权利要求1-4任意一项权利要求所述的一种内存数据优化加载的方法所包含的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910534830.5A CN110297673B (zh) | 2019-06-20 | 2019-06-20 | 内存数据优化加载的方法、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910534830.5A CN110297673B (zh) | 2019-06-20 | 2019-06-20 | 内存数据优化加载的方法、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110297673A CN110297673A (zh) | 2019-10-01 |
CN110297673B true CN110297673B (zh) | 2022-04-12 |
Family
ID=68028285
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910534830.5A Active CN110297673B (zh) | 2019-06-20 | 2019-06-20 | 内存数据优化加载的方法、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110297673B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111522851A (zh) * | 2020-04-24 | 2020-08-11 | 北京思特奇信息技术股份有限公司 | 通过缓存临时数据以提高业务受理效率的方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103309767B (zh) * | 2012-03-08 | 2016-01-13 | 阿里巴巴集团控股有限公司 | 一种客户端日志处理方法和装置 |
CN103793485B (zh) * | 2014-01-20 | 2017-07-11 | 锐达互动科技股份有限公司 | 客户端基于缓存数据实现查询网络数据的方法 |
CN104407933B (zh) * | 2014-10-31 | 2018-10-02 | 华为技术有限公司 | 一种数据的备份方法及装置 |
CN105335512B (zh) * | 2015-10-30 | 2019-09-17 | 小米科技有限责任公司 | 数据查询方法及装置 |
CN105975579B (zh) * | 2016-05-05 | 2019-09-17 | 北京思特奇信息技术股份有限公司 | 一种内存数据库的主备复制方法及内存数据库系统 |
CN109299035B (zh) * | 2018-07-04 | 2021-10-15 | 中通服建设有限公司 | 一种chr文件管理方法、系统及计算机可读存储介质 |
-
2019
- 2019-06-20 CN CN201910534830.5A patent/CN110297673B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110297673A (zh) | 2019-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108121782B (zh) | 查询请求的分配方法、数据库中间件系统以及电子设备 | |
US10949415B2 (en) | Logging system using persistent memory | |
CN108804523B (zh) | 数据同步方法、系统及计算机可读存储介质 | |
US6578041B1 (en) | High speed on-line backup when using logical log operations | |
CN108509462B (zh) | 一种同步活动事务表的方法及装置 | |
US8448023B2 (en) | Approach for data integrity in an embedded device environment | |
US20080307011A1 (en) | Failure recovery and error correction techniques for data loading in information warehouses | |
US12038873B2 (en) | Database management system | |
CN112612799B (zh) | 一种数据同步方法及终端 | |
US20090063807A1 (en) | Data redistribution in shared nothing architecture | |
CN107665219B (zh) | 一种日志管理方法及装置 | |
CN113111129A (zh) | 数据同步方法、装置、设备及存储介质 | |
JP2010134522A (ja) | データベース管理方法、データベース管理プログラム、および、データベース管理装置 | |
US12093241B2 (en) | Method for replaying log on data node, data node, and system | |
CN109726264B (zh) | 用于索引信息更新的方法、装置、设备和介质 | |
WO2011048268A1 (en) | Saving snapshot of a knowledge base without blocking | |
CN104750755A (zh) | 一种数据库主备切换后的数据回补方法及系统 | |
CN110297673B (zh) | 内存数据优化加载的方法、存储介质 | |
KR102049417B1 (ko) | Nvdimm을 이용한 인-메모리 데이터베이스 기반의 데이터 저장 및 복원 방법 | |
JPWO2014136172A1 (ja) | データベース装置、プログラムおよびデータ処理方法 | |
CN109189480A (zh) | 文件系统启动方法及装置 | |
CN113590379A (zh) | Redis数据持久化方法及系统 | |
CN112187889A (zh) | 一种数据同步方法、装置及存储介质 | |
CN111782622B (zh) | 日志处理方法、装置、服务器及存储介质 | |
CN112765126B (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 |