【技术实现步骤摘要】
一种在非易失性内存上实现Redis内存数据库的方法和系统
本专利技术涉及内存服务器
,具体涉及一种在非易失性内存上实现Redis内存数据库的方法和系统。
技术介绍
现有的Redis内存数据库主要通过追加写日志来进行数据持久化,当进程重启后通过日志回放进行数据恢复。同时,由于日志是以追加写的方式写入文件,为避免文件的无限制增长,需要在日志文件增长到一定阀值条件后通过fork(复刻)方式创建一个新的子进程,子进程具有父进程的全量数据,在子进程中将全量数据保存到硬盘,父进程将增量数据继续写入到日志文件。父进程调用fork时,内存数据库的访问延迟会大大增加,并且由于Copy-On-Write(写时复制)的特性,父进程如果频繁进行写操作,子进程还保持着原先的全量数据,这时候内存的使用量会成倍的增加。另外,进程重启后需要通过加载全量数据和日志文件的回放来恢复数据,如果全量数据或日志文件很大,这个恢复的时间会非常的长。
技术实现思路
本专利技术提供一种在非易失性内存上实现Redis内存数据库的方法和系统,实现Redis数据直接存储非易失性内存,并保持近似于内存的访问速度。为了实现上述专利技术目的,本专利技术采取的技术方案如下:第一方面,本专利技术提供一种在非易失性内存上实现Redis内存数据库的方法,包括:为每个Redis实例分配唯一的索引;根据所述索引,基于所述Redis实例的规格在非易失性内存为所述Redis实例分配存储空间,并将所述Redis实例的键值和数据映 ...
【技术保护点】
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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。