一种在非易失性内存上实现Redis内存数据库的方法和系统技术方案

技术编号:26065112 阅读:20 留言:0更新日期:2020-10-28 16:37
本申请提出一种在非易失性内存上实现Redis内存数据库的方法和系统,所述方法包括:为每个Redis实例分配唯一的索引;根据所述索引,基于所述Redis实例的规格在非易失性内存为所述Redis实例分配存储空间,并将所述Redis实例的键值和数据映射为LSM树的存储结构存入分配的存储空间;向所述Redis实例反馈分配的索引和存储空间。实现Redis数据直接存储非易失性内存,并保持近似于内存的访问速度。

【技术实现步骤摘要】
一种在非易失性内存上实现Redis内存数据库的方法和系统
本专利技术涉及内存服务器
,具体涉及一种在非易失性内存上实现Redis内存数据库的方法和系统。
技术介绍
现有的Redis内存数据库主要通过追加写日志来进行数据持久化,当进程重启后通过日志回放进行数据恢复。同时,由于日志是以追加写的方式写入文件,为避免文件的无限制增长,需要在日志文件增长到一定阀值条件后通过fork(复刻)方式创建一个新的子进程,子进程具有父进程的全量数据,在子进程中将全量数据保存到硬盘,父进程将增量数据继续写入到日志文件。父进程调用fork时,内存数据库的访问延迟会大大增加,并且由于Copy-On-Write(写时复制)的特性,父进程如果频繁进行写操作,子进程还保持着原先的全量数据,这时候内存的使用量会成倍的增加。另外,进程重启后需要通过加载全量数据和日志文件的回放来恢复数据,如果全量数据或日志文件很大,这个恢复的时间会非常的长。
技术实现思路
本专利技术提供一种在非易失性内存上实现Redis内存数据库的方法和系统,实现Redis数据直接存储非易失性内存,并保持近似于内存的访问速度。为了实现上述专利技术目的,本专利技术采取的技术方案如下:第一方面,本专利技术提供一种在非易失性内存上实现Redis内存数据库的方法,包括:为每个Redis实例分配唯一的索引;根据所述索引,基于所述Redis实例的规格在非易失性内存为所述Redis实例分配存储空间,并将所述Redis实例的键值和数据映射为LSM树的存储结构存入分配的存储空间;向所述Redis实例反馈分配的索引和存储空间。优选地,所述方法还包括:所述Redis实例基于获取的存储空间,将相应的非易失性内存存储空间映射到本进程的虚拟地址空间。优选地,所述方法还包括:接收所述Redis实例发送的释放空间操作请求;对所述释放空间操作请求进行解析,并按照解析出的索引删除所述释放空间操作请求中请求释放的非易失性内存对应的存储空间;向所述Redis实例反馈释放结果。优选地,将所述Redis实例的键值和数据映射为LSM树的存储结构存入分配的存储空间包括:解析Redis实例发送的数据信息,并将所述数据信息归纳到解析出的索引在非易失性内存对应的存储空间;将Redis实例每一条解析的键值和数据映射为LSM树的形式以顺序写的方式存入非易失性内存的存储地址。优选地,将Redis实例每一条解析的键值和数据映射为LSM树的形式以顺序写的方式存入非易失性内存的存储地址包括:解析Redis实例发送的数据信息对应的键值和数据,并保存在所述键值所在层级对应的LSM树的存储地址中;将所述LSM树的上一层中的非活跃数据合并为有序数据后写入到LSM树的下一层存储地址中。优选地,所述方法还包括:基于存储在非易失性内存上的每个Redis实例的数据冷热特性;将判定为冷数据的一个或者多个Redis实例的数据信息从非易失性内存迁移至硬盘上;或者,基于存储在非易失性内存上的Redis实例的每组数据冷热特性;将判定为冷数据的Redis实例的一组或者多组数据从非易失性内存迁移至硬盘上。优选地,所述方法还包括:接收Redis实例发送的读取空间操作请求;对所述读取空间操作请求进行解析,并按照解析出的索引查找非易失性内存对应的存储空间;当在非易失性内存查找到对应的存储空间时,基于非易失性内存对应的存储空间返回所述Redis实例的数据信息;当在非易失性内存未查找到对应的存储空间时,按照解析出的索引查找硬盘上对应的存储空间;基于硬盘对应的存储空间返回所述Redis实例的数据信息。优选地,所述方法还包括:当存储在硬盘上的一个或者多个Redis实例的数据信息判定为热数据时,将所述Redis实例的数据信息从硬盘迁移至非易失性内存上;或者,当存储在硬盘上的Redis实例中的一组或者多组数据判定为热数据时,将所述Redis实例的一组或者多组数据从硬盘迁移至非易失性内存上。第二方面,本专利技术提供一种在非易失性内存上实现Redis内存数据库的系统,包括:9、一种在非易失性内存上实现Redis内存数据库的系统,其特征在于,包括存储空间管理器和非易失性内存,所述存储空间管理器,设置为为每个Redis实例分配唯一的索引;并根据所述索引,基于所述Redis实例的规格在非易失性内存为所述Redis实例分配存储空间,并将所述Redis实例的键值和数据映射为LSM树的存储结构存入分配的存储空间;所述存储空间管理器,还设置为向所述Redis实例反馈分配的索引和存储空间。10、根据权利要求9所述的系统,其特征在于,还包括:硬盘,所述存储空间管理器基于存储在非易失性内存上的每个Redis实例的数据冷热特性;将判定为冷数据的一个或者多个Redis实例的数据信息从非易失性内存迁移至硬盘上;或者,所述存储空间管理器基于存储在非易失性内存上的Redis实例的每组数据冷热特性;将判定为冷数据的Redis实例的一组或者多组数据从非易失性内存迁移至硬盘上。11、根据权利要求10所述的系统,其特征在于,所述存储空间管理器接收Redis实例发送的读取空间操作请求;对所述读取空间操作请求进行解析,并按照解析出的索引查找非易失性内存对应的存储空间;当在非易失性内存查找到对应的存储空间时,所述存储空间管理器基于非易失性内存对应的存储空间返回所述Redis实例的数据信息;当在非易失性内存未查找到对应的存储空间时,所述存储空间管理器按照解析出的索引查找硬盘上对应的存储空间;基于硬盘对应的存储空间返回所述Redis实例的数据信息。12、根据权利要求10所述的系统,其特征在于,当存储在硬盘上的一个或者多个Redis实例的数据信息判定为热数据时,所述存储空间管理器将所述Redis实例的数据信息从硬盘迁移至非易失性内存上;当存储在硬盘上的Redis实例中的一组或者多组数据判定为热数据时,所述存储空间管理器将所述Redis实例的一组或者多组数据从硬盘迁移至非易失性内存上。。本专利技术与现有技术相比,具有如下有益效果:1.数据直接存储非易失性内存,并保持近似于内存的访问速度;2.将Redis数据结构转换成LSM树KV操作;3.利用LSM树的层级实现数据的冷热分离;4.去除掉fork子进程,导出全量数据的操作。附图说明图1为本专利技术实施例的在非易失性内存上实现Redis内存数据库的方法的流程图;图2为本专利技术实施例的在非易失性内存上实现Redis内存数据库的系统的的结构示意图;图3为本专利技术实施例的LSM树写入流程图;图4为本专利技术实施例的LSM树读取流程图;图5为本专利技术实施例的Redisset结构转换的示意图;图6为本专利技术实施例的Redish本文档来自技高网...

【技术保护点】
1.一种在非易失性内存上实现Redis内存数据库的方法,其特征在于,包括:/n为每个Redis实例分配唯一的索引;/n根据所述索引,基于所述Redis实例的规格在非易失性内存为所述Redis实例分配存储空间,并将所述Redis实例的键值和数据映射为LSM树的存储结构存入分配的存储空间;/n向所述Redis实例反馈分配的索引和存储空间。/n

【技术特征摘要】
1.一种在非易失性内存上实现Redis内存数据库的方法,其特征在于,包括:
为每个Redis实例分配唯一的索引;
根据所述索引,基于所述Redis实例的规格在非易失性内存为所述Redis实例分配存储空间,并将所述Redis实例的键值和数据映射为LSM树的存储结构存入分配的存储空间;
向所述Redis实例反馈分配的索引和存储空间。


2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述Redis实例基于获取的存储空间,将相应的非易失性内存存储空间映射到本进程的虚拟地址空间。


3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收所述Redis实例发送的释放空间操作请求;
对所述释放空间操作请求进行解析,并按照解析出的索引删除所述释放空间操作请求中请求释放的非易失性内存对应的存储空间;
向所述Redis实例反馈释放结果。


4.根据权利要求1所述的方法,其特征在于,将所述Redis实例的键值和数据映射为LSM树的存储结构存入分配的存储空间包括:
解析Redis实例发送的数据信息,并将所述数据信息归纳到解析出的索引在非易失性内存对应的存储空间;
将Redis实例每一条解析的键值和数据映射为LSM树的形式以顺序写的方式存入非易失性内存的存储地址。


5.根据权利要求4所述的方法,其特征在于,将Redis实例每一条解析的键值和数据映射为LSM树的形式以顺序写的方式存入非易失性内存的存储地址包括:
解析Redis实例发送的数据信息对应的键值和数据,并保存在所述键值所在层级对应的LSM树的存储地址中;
将所述LSM树的上一层中的非活跃数据合并为有序数据后写入到LSM树的下一层存储地址中。


6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
基于存储在非易失性内存上的每个Redis实例的数据冷热特性;将判定为冷数据的一个或者多个Redis实例的数据信息从非易失性内存迁移至硬盘上;
或者,基于存储在非易失性内存上的Redis实例的每组数据冷热特性;将判定为冷数据的Redis实例的一组或者多组数据从非易失性内存迁移至硬盘上。


7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
接收Redis实例发送的读取空间操作请求;
对所述读取空间操作请求进行解析,并按照解析出的索引查找非易失性内存对应的存储空间;
当在非易失性内存查找到对应的存储空间时,基于非易失性内存对应的存储空间返回所述Redis实例的数据...

【专利技术属性】
技术研发人员:王蕾
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛;KY

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

1