数据存储、读取的方法和装置制造方法及图纸

技术编号:24574227 阅读:30 留言:0更新日期:2020-06-21 00:08
本发明专利技术公开了一种数据存储、读取的方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:获取待存储数据;将待存储数据存储到主机redis数据库中的轻量级的内存映射数据库引擎中;将所述轻量级的内存映射数据库引擎中的数据同步到本地磁盘中。该实施方式避免了现有技术无法很好地支持海量存储、在高并发读写的情况下无法保证低延迟、在数据的情况下性能严重下降的技术缺陷,进而提升缓存能力、使得数据在读取时可以达到低延迟、高性能、海量存储数据的技术效果。

Methods and devices for data storage and reading

【技术实现步骤摘要】
数据存储、读取的方法和装置
本专利技术涉及计算机
,尤其涉及一种数据存储、读取的方法和装置。
技术介绍
现有技术中Redis数据库的持久化有两种机制引擎:RDB和AOF。所述RDB持久化引擎是把当前进程数据生成快照保存到硬盘的过程;所述AOF(appendonlyfile)持久化引擎:以独立日志的方式记录每次写命令,重启时再重新执行AOF文件中命令达到恢复数据的目的。但是上述两种持久化机制只是用来作为数据恢复的一种机制。在实现本专利技术过程中,专利技术人发现现有技术中至少存在如下问题:1.无法很好地支持海量存储;2.在高并发读写的情况下无法保证低延迟;3.在大数据量的情况下性能严重下降。
技术实现思路
有鉴于此,本专利技术实施例提供一种数据存储、读取的方法和装置,能够提升缓存能力、使得数据在读取时可以达到低延迟、高性能、海量存储数据的技术效果。为实现上述目的,根据本专利技术实施例的一个方面,提供了一种数据存储的方法,包括:获取待存储数据;将待存储数据存储到主机redis数据库中的轻量级的内存映射数据库引擎中;利用页高速缓冲存储器的机制,将所述轻量级的内存映射数据库引擎中的数据同步到本地磁盘中。可选地,将所述轻量级的内存映射数据库引擎中的数据同步到本地磁盘中是利用页高速缓冲存储器的机制。可选地,将待存储数据存储到主机redis数据库中的轻量级的内存映射数据库引擎中,包括:利用内存映射文件的方法,将待存储数据映射到主机redis数据库中的轻量级的内存映射数据库引擎中;在所述轻量级的内存映射数据库引擎中,利用多路搜索树的数据结构,对所述待存储数据进行存储。可选地,将待存储数据存储到主机redis数据库中的轻量级的内存映射数据库引擎中之后,包括:将所述轻量级的内存映射数据库引擎中的数据同步到从属数据库中。可选地,将所述轻量级的内存映射数据库引擎中的数据同步到从属数据库中,包括:将轻量级的内存映射数据库引擎中的全量数据以快照的形式存储到镜像磁盘;根据所述镜像磁盘中的快照,将所述轻量级的内存映射数据库引擎中的全量数据同步到从属数据库中;将轻量级的内存映射数据库引擎中的增量数据直接同步到从属数据库中。可选地,所述轻量级的内存映射数据库引擎中的数据是通过设定时间间隔,同步到从属数据库中的。可选地,所述轻量级的内存映射数据库引擎中的数据是通过后台线程,同步到从属数据库中的。根据本专利技术实施例的另一个方面,提供一种数据读取的方法,包括:获取读操作;判断所述读操作对应的键是否存在于内存中;若所述键存在于内存中,则执行所述读取操作;若所述键不存在于所述内存中,则在轻量级的内存映射数据库引擎中寻找所述键;将轻量级的内存映射数据库引擎中与所述读操作对应的数据加载到内存,进而执行所述读取操作。根据本专利技术实施例的另一个方面,提供一种数据存储的装置,包括:待存储数据获取模块,用于获取待存储数据;轻量级的内存映射数据库引擎同步模块,用于将待存储数据存储到主机redis数据库中的轻量级的内存映射数据库引擎中;本地磁盘同步模块,用于利用页高速缓冲存储器的机制,将所述轻量级的内存映射数据库引擎中的数据同步到本地磁盘中。根据本专利技术实施例的另一个方面,提供一种数据读取的装置,包括:读操作获取模块,用于获取读操作;内存查询模块,用于判断所述读操作对应的键是否存在于内存中;读取执行模块,用于若所述键存在于内存中,则执行所述读取操作;若所述键不存在于所述内存中,则在轻量级的内存映射数据库引擎中寻找所述键;将轻量级的内存映射数据库引擎中与所述读操作对应的数据加载到内存,进而执行所述读取操作。可选地,执行所述读取是利用后台线程完成的。根据本专利技术实施例的另一个方面,提供一种数据存储、读取的电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本专利技术数据存储、读取的方法。根据本专利技术实施例的另一个方面,提供一种计算机可读介质,其上存储有计算机程序,程序被处理器执行时实现本专利技术数据存储、读取的方法。上述专利技术中的一个实施例具有如下优点或有益效果:本专利技术通过使用LMDB引擎对待存储数据进行存储,使得数据可以持久化到磁盘中,进而达到提升缓存能力、使得数据在读取时可以达到低延迟、高性能、海量存储数据的技术效果,避免了现有技术无法很好地支持海量存储、在高并发读写的情况下。无法保证低延迟、在大数据量数据存储或读取的情况下性能严重下降的技术缺陷。上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。附图说明附图用于更好地理解本专利技术,不构成对本专利技术的不当限定。其中:图1是根据本专利技术实施例的数据存储的方法的主要流程的示意图;图2是根据本专利技术实施例的采用LMDB引擎对数据存储的性能曲线示意图;图3是根据本专利技术实施例的采用LSM引擎对数据存储的性能曲线示意图;图4是根据本专利技术实施例的数据读取的方法的主要流程的示意图;图5是根据本专利技术实施例的数据存储的装置的主要模块的示意图;图6是根据本专利技术实施例的数据读取的装置的主要模块的示意图;图7是本专利技术实施例可以应用于其中的示例性系统架构图;图8是适于用来实现本专利技术实施例的终端设备或服务器的计算机系统的结构示意图。具体实施方式以下结合附图对本专利技术的示范性实施例做出说明,其中包括本专利技术实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本专利技术的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。图1是根据本专利技术实施例的数据存储的方法的主要流程的示意图,如图1所示,包括:步骤S101、获取待存储数据;步骤S102、将待存储数据存储到主机redis数据库中的轻量级的内存映射数据库引擎(LMDB引擎)中;步骤S103、将所述轻量级的内存映射数据库引擎中的数据同步到本地磁盘中。现有技术中,引擎不能超出内存的限制,例如AOF持久化引擎。持久化的数据跟内存中的数据是一样的,所以磁盘上存储数据的大小跟内存数据是一样的。然而通过所述LMDB引擎可以调用操作系统的IO接口写入到本地磁盘上,进而在读取数据时,可以不限于内存上的数据,还可以根据键读到对应的值。轻量级的内存映射数据库引擎的缩写为LMDB引擎,其全称为LightningMemory-MappedDatabase引擎。当通过LMDB引擎进行数据的存储时,可以尽量减少拷贝,进而提高读取性能。可选地,利用内存映射文件的方法(mmap),将待存储数据映射到主机r本文档来自技高网...

【技术保护点】
1.一种数据存储的方法,其特征在于,包括:/n获取待存储数据;/n将待存储数据存储到主机redis数据库中的轻量级的内存映射数据库引擎中;/n将所述轻量级的内存映射数据库引擎中的数据同步到本地磁盘中。/n

【技术特征摘要】
1.一种数据存储的方法,其特征在于,包括:
获取待存储数据;
将待存储数据存储到主机redis数据库中的轻量级的内存映射数据库引擎中;
将所述轻量级的内存映射数据库引擎中的数据同步到本地磁盘中。


2.根据权利要求1所述的方法,其特征在于,将所述轻量级的内存映射数据库引擎中的数据同步到本地磁盘中是利用页高速缓冲存储器的机制。


3.根据权利要求1所述的方法,其特征在于,将待存储数据存储到主机redis数据库中的轻量级的内存映射数据库引擎中,包括:
利用内存映射文件的方法,将待存储数据映射到主机redis数据库中的轻量级的内存映射数据库引擎中;
在所述轻量级的内存映射数据库引擎中,利用多路搜索树的数据结构,对所述待存储数据进行存储。


4.根据权利要求1所述的方法,其特征在于,将待存储数据存储到主机redis数据库中的轻量级的内存映射数据库引擎中之后,包括:
将所述轻量级的内存映射数据库引擎中的数据同步到从属数据库中。


5.根据权利要求1所述的方法,其特征在于,将所述轻量级的内存映射数据库引擎中的数据同步到从属数据库中,包括:
将轻量级的内存映射数据库引擎中的全量数据以快照的形式存储到镜像磁盘;
根据所述镜像磁盘中的快照,将所述轻量级的内存映射数据库引擎中的全量数据同步到从属数据库中;
将轻量级的内存映射数据库引擎中的增量数据直接同步到从属数据库中。


6.根据权利要求1所述的方法,其特征在于,所述轻量级的内存映射数据库引擎中的数据是通过设定时间间隔,同步到从属数据库中的。


7.根据权利要求1所述的方法,其特征在于,所述轻量级的内存映射数据库引擎中的数据是通过后台线程,同步到从属数据库中的。
<...

【专利技术属性】
技术研发人员:张开涛王杰颖邹子靖
申请(专利权)人:北京京东尚科信息技术有限公司北京京东世纪贸易有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1