CN110750579A - 一种云数据库Redis的高效内存分布方法及系统 - Google Patents

一种云数据库Redis的高效内存分布方法及系统 Download PDF

Info

Publication number
CN110750579A
CN110750579A CN201910998261.XA CN201910998261A CN110750579A CN 110750579 A CN110750579 A CN 110750579A CN 201910998261 A CN201910998261 A CN 201910998261A CN 110750579 A CN110750579 A CN 110750579A
Authority
CN
China
Prior art keywords
redis
shared memory
memory
cloud database
data
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.)
Pending
Application number
CN201910998261.XA
Other languages
English (en)
Inventor
刘金伟
许晓笛
赵山
刘津
张哲铭
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur Cloud Information Technology Co Ltd
Original Assignee
Inspur Cloud Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Inspur Cloud Information Technology Co Ltd filed Critical Inspur Cloud Information Technology Co Ltd
Priority to CN201910998261.XA priority Critical patent/CN110750579A/zh
Publication of CN110750579A publication Critical patent/CN110750579A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Fuzzy Systems (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种云数据库Redis的高效内存分布方法及系统,属于云计算及数据库技术领域。本发明的云数据库Redis的高效内存分布方法,Redis使用shm共享内存作为数据存储,由额外的进程共同持有,同时将内存数据分配表保存到系统进程目录,改变Redis的底层数据申请及加载。该发明的云数据库Redis的高效内存分布方法非数据故障导致重启时,不做持久化操作,加快启动和相应速度,同时能够提升Redis可用性,具有很好的推广应用价值。

Description

一种云数据库Redis的高效内存分布方法及系统
技术领域
本发明涉及云计算及数据库技术领域,具体提供一种云数据库Redis的高效内存分布方法及系统。
背景技术
Redis作为一种高效的内存数据库,具有性能高、结构简单、相关工具完备等特点,被越来越多地应用在各种互联网工程中,尤其作为memcache的优秀替代者,成为各大门户网站和移动互联网App的必备组件。近年来随着云计算概念的兴起,大量Redis数据库从本地被迁移到了云计算平台,成为了云数据库。在互联网快速发展的今天,快速响应变得尤其重要,尤其是面对大量并发业务的产生,云服务的SLA变得越来越重要,在每秒高达上万甚至十万级的请求面前,业务已经不允许出现长时间的中断,然而当面临Redis有大量数据存在的时候数据持久化和重加载数据变得异常缓慢,在Redis程序本身面临非内存数据故障需要重启时,程序会首先触发持久化操作重启完成后会重新加载数据,受限于计算机设备的差异,这个过程是非常缓慢的,如果全部使用易失性存储不但价格高昂,稳定性也难以保证,如何更快的恢复成为了一个新的问题。
如图1所示,现有技术中Redis的关闭过程中Redis收到关闭命令,检查当前是否需要持久化数据,如果需要就将数据保存到rdb文件,持久化完成后进程才退出,耗费的时间由数据量大小决定。非数据故障导致重启时,Redis本身需要做数据持久化,受限于计算机设备的差异,数据持久化过程非常缓慢。
如图2所示,Redis的加载过程中,Redis程序启动后读取配置,如果配置中包含rdb文件则加载数据到内存中,加载期间不响应客户端指令,加载时间由数据大小决定。在启动时由于需要加载大量的数据,导致启动过程异常的缓慢。
发明内容
本发明的技术任务是针对上述存在的问题,提供一种非数据故障导致重启时,不做持久化操作,加快启动和相应速度,同时能够提升Redis可用性的云数据库Redis的高效内存分布方法。
本发明进一步的技术任务是提供一种云数据库Redis的高效内存分布系统。
为实现上述目的,本发明提供了如下技术方案:
一种云数据库Redis的高效内存分布方法,该方法中,Redis使用shm共享内存作为数据存储,由额外的进程共同持有,同时将内存数据分配表保存到系统进程目录,改变Redis的底层数据申请及加载。
作为优选,该云数据库Redis的高效内存分布方法包括Redis进程的启动和Redis进程的退出。
作为优选,Redis进程的启动过程为:
1)Redis进程启动时从配置文件加载配置;
2)从配置中读取分配表是否可用,若可用,执行过程3),否则执行过程4);
3)直接读取共享内存分配表;
4)利用shm申请共享内存,启动一个共同持有的共享内存进行;
5)重新初始化一个分配表新建或覆盖已有的分配表文件。
作为优选,在读取共享内存分配表时,直接直接获取数据的物理内存地址并初始化相应的数据存储区域。
作为优选,Redis进程的退出过程为:
a)Redis收到停止信号或指令时,检查内存中是否存在用户数据,若不存在执行过程b),否则执行过程c);
b)结束关闭,退出程序;
c)检查共享内存是否存在另一个持有者的程序进程,若存在共享内存共同持有者进程,则返回执行过程b),若不存在则先启动一个共享内存进程并设置共享内存数据,等待程序启动完成后返回执行过程b)。
一种云数据库Redis的高效内存分布系统,包括Redis进程的启动模块和Redis进程的退出模块。
作为优选,所述Redis进程的启动模块的工作过程为:
1)Redis进程启动时从配置文件加载配置;
2)从配置中读取分配表是否可用,若可用,执行过程3),否则执行过程4);
3)直接读取共享内存分配表;
4)利用shm申请共享内存,启动一个共同持有的共享内存进行;
5)重新初始化一个分配表新建或覆盖已有的分配表文件。
作为优选,Redis进程的启动模块在读取共享内存分配表时,直接直接获取数据的物理内存地址并初始化相应的数据存储区域。
作为优选,所述Redis进程的退出模块的工作过程为:
a)Redis收到停止信号或指令时,检查内存中是否存在用户数据,若不存在执行过程b),否则执行过程c);
b)结束关闭,退出程序;
c)检查共享内存是否存在另一个持有者的程序进程,若存在共享内存共同持有者进程,则返回执行过程b),若不存在则先启动一个共享内存进程并设置共享内存数据,等待程序启动完成后返回执行过程b)。
与现有技术相比,本发明的云数据库Redis的高效内存分布方法具有以下突出的有益效果:
(一)该云数据库Redis的高效内存分布方法利用共享内存避免不需要的数据持久化过程,加快Redis关闭速度;
(二)利用共同持有共享数据的进程,避免系统回收内存数据,从而保持数据保留在内存中;
(三)使用共享内存保留的数据,避免了Redis启动时需要从存储中加载大量数据而产生的时间,加快程序响应速度,具有良好的推广应用价值。
附图说明
图1是现有技术中Redis启动过程流程图;
图2是现有技术中Redis退出过程流程图;
图3本发明所述云数据库Redis的高效内存分布方法的Redis启动过程流程图;
图4本发明所述云数据库Redis的高效内存分布方法的Redis退出过程流程图。
具体实施方式
下面将结合附图和实施例,对本发明的云数据库Redis的高效内存分布方法及系统作进一步详细说明。
实施例
本发明的云数据库Redis的高效内存分布方法,Redis使用shm共享内存作为数据存储,由额外的进程共同持有,同时将内存数据分配表保存到系统进程目录,改变Redis的底层数据申请及加载。
该云数据库Redis的高效内存分布方法包括Redis进程的启动和Redis进程的退出。
如图3所示,Redis进程的启动过程为:
1)Redis进程启动时从配置文件加载配置。
2)从配置中读取分配表是否可用,若可用,执行过程3),否则执行过程4);
3)直接读取共享内存分配表。
在读取共享内存分配表时,直接直接获取数据的物理内存地址并初始化相应的数据存储区域。
4)利用shm申请共享内存,启动一个共同持有的共享内存进行。
5)重新初始化一个分配表新建或覆盖已有的分配表文件。
如图4所示,Redis进程的退出过程为:
a)Redis收到停止信号或指令时,检查内存中是否存在用户数据,若不存在执行过程b),否则执行过程c).
b)结束关闭,退出程序。
c)检查共享内存是否存在另一个持有者的程序进程,若存在共享内存共同持有者进程,则返回执行过程b),若不存在则先启动一个共享内存进程并设置共享内存数据,等待程序启动完成后返回执行过程b)。
该云数据库Redis的高效内存分布方法在非数据故障导致重启时,Redis本身的内存数据仍然保存在共享内存中,不做持久化操作,Redis启动时自动搜索已存在的共享内存数据,如果存在就不再进行数据读取,加快启动和响应速度,利用额外的进程进行数据持久化,进一步提升Redis的可用性。
本发明的云数据库Redis的高效内存分布系统,包括Redis进程的启动模块和Redis进程的退出模块。
Redis进程的启动模块的工作过程为:
1)Redis进程启动时从配置文件加载配置。
2)从配置中读取分配表是否可用,若可用,执行过程3),否则执行过程4);
3)直接读取共享内存分配表。
4)利用shm申请共享内存,启动一个共同持有的共享内存进行。
5)重新初始化一个分配表新建或覆盖已有的分配表文件。
Redis进程的启动模块在读取共享内存分配表时,直接直接获取数据的物理内存地址并初始化相应的数据存储区域。
Redis进程的退出模块的工作过程为:
a)Redis收到停止信号或指令时,检查内存中是否存在用户数据,若不存在执行过程b),否则执行过程c)。
b)结束关闭,退出程序。
c)检查共享内存是否存在另一个持有者的程序进程,若存在共享内存共同持有者进程,则返回执行过程b),若不存在则先启动一个共享内存进程并设置共享内存数据,等待程序启动完成后返回执行过程b)。
以上所述的实施例,只是本发明较优选的具体实施方式,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。

Claims (9)

1.一种云数据库Redis的高效内存分布方法,其特征在于:该方法中,Redis使用shm共享内存作为数据存储,由额外的进程共同持有,同时将内存数据分配表保存到系统进程目录,改变Redis的底层数据申请及加载。
2.根据权利要求1所述的云数据库Redis的高效内存分布方法,其特征在于:该方法包括Redis进程的启动和Redis进程的退出。
3.根据权利要求2所述的云数据库Redis的高效内存分布方法,其特征在于:Redis进程的启动过程为:
1)Redis进程启动时从配置文件加载配置;
2)从配置中读取分配表是否可用,若可用,执行过程3),否则执行过程4);
3)直接读取共享内存分配表;
4)利用shm申请共享内存,启动一个共同持有的共享内存进行;
5)重新初始化一个分配表新建或覆盖已有的分配表文件。
4.根据权利要求3所述的云数据库Redis的高效内存分布方法,其特征在于:在读取共享内存分配表时,直接直接获取数据的物理内存地址并初始化相应的数据存储区域。
5.根据权利要求4所述的云数据库Redis的高效内存分布方法,其特征在于:Redis进程的退出过程为:
a)Redis收到停止信号或指令时,检查内存中是否存在用户数据,若不存在执行过程b),否则执行过程c);
b)结束关闭,退出程序;
c)检查共享内存是否存在另一个持有者的程序进程,若存在共享内存共同持有者进程,则返回执行过程b),若不存在则先启动一个共享内存进程并设置共享内存数据,等待程序启动完成后返回执行过程b)。
6.一种云数据库Redis的高效内存分布系统,其特征在于:包括Redis进程的启动模块和Redis进程的退出模块。
7.根据权利要求6的云数据库Redis的高效内存分布系统,其特征在于:所述Redis进程的启动模块的工作过程为:
1)Redis进程启动时从配置文件加载配置;
2)从配置中读取分配表是否可用,若可用,执行过程3),否则执行过程4);
3)直接读取共享内存分配表;
4)利用shm申请共享内存,启动一个共同持有的共享内存进行;
5)重新初始化一个分配表新建或覆盖已有的分配表文件。
8.根据权利要求7的云数据库Redis的高效内存分布系统,其特征在于:Redis进程的启动模块在读取共享内存分配表时,直接直接获取数据的物理内存地址并初始化相应的数据存储区域。
9.根据权利要求8的云数据库Redis的高效内存分布系统,其特征在于:所述Redis进程的退出模块的工作过程为:
a)Redis收到停止信号或指令时,检查内存中是否存在用户数据,若不存在执行过程b),否则执行过程c);
b)结束关闭,退出程序;
c)检查共享内存是否存在另一个持有者的程序进程,若存在共享内存共同持有者进程,则返回执行过程b),若不存在则先启动一个共享内存进程并设置共享内存数据,等待程序启动完成后返回执行过程b)。
CN201910998261.XA 2019-10-21 2019-10-21 一种云数据库Redis的高效内存分布方法及系统 Pending CN110750579A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910998261.XA CN110750579A (zh) 2019-10-21 2019-10-21 一种云数据库Redis的高效内存分布方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910998261.XA CN110750579A (zh) 2019-10-21 2019-10-21 一种云数据库Redis的高效内存分布方法及系统

Publications (1)

Publication Number Publication Date
CN110750579A true CN110750579A (zh) 2020-02-04

Family

ID=69279001

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910998261.XA Pending CN110750579A (zh) 2019-10-21 2019-10-21 一种云数据库Redis的高效内存分布方法及系统

Country Status (1)

Country Link
CN (1) CN110750579A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111858556A (zh) * 2020-07-22 2020-10-30 浪潮云信息技术股份公司 一种基于版本控制的分布式缓存管理方法及管理器
CN113434515A (zh) * 2021-07-23 2021-09-24 深圳智多豚物联技术有限公司 基于持久化redis存储服务的分布式高速存储系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101901250A (zh) * 2010-06-08 2010-12-01 中兴通讯股份有限公司 一种内存数据库及其数据处理方法
WO2018120010A1 (en) * 2016-12-30 2018-07-05 Intel Corporation Memory sharing for application offload from host processor to integrated sensor hub
CN108255619A (zh) * 2017-12-28 2018-07-06 新华三大数据技术有限公司 一种数据处理方法及装置
CN108614740A (zh) * 2016-12-12 2018-10-02 上海美桔网络科技有限公司 基于进程间共享内存方式生成唯一id的方法及系统
CN110019475A (zh) * 2017-12-21 2019-07-16 杭州华为数字技术有限公司 数据持久化处理方法、装置及系统
CN110300160A (zh) * 2019-06-14 2019-10-01 杭州爱科科技股份有限公司 用于嵌入式系统的数据共享方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101901250A (zh) * 2010-06-08 2010-12-01 中兴通讯股份有限公司 一种内存数据库及其数据处理方法
CN108614740A (zh) * 2016-12-12 2018-10-02 上海美桔网络科技有限公司 基于进程间共享内存方式生成唯一id的方法及系统
WO2018120010A1 (en) * 2016-12-30 2018-07-05 Intel Corporation Memory sharing for application offload from host processor to integrated sensor hub
CN110019475A (zh) * 2017-12-21 2019-07-16 杭州华为数字技术有限公司 数据持久化处理方法、装置及系统
CN108255619A (zh) * 2017-12-28 2018-07-06 新华三大数据技术有限公司 一种数据处理方法及装置
CN110300160A (zh) * 2019-06-14 2019-10-01 杭州爱科科技股份有限公司 用于嵌入式系统的数据共享方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111858556A (zh) * 2020-07-22 2020-10-30 浪潮云信息技术股份公司 一种基于版本控制的分布式缓存管理方法及管理器
CN113434515A (zh) * 2021-07-23 2021-09-24 深圳智多豚物联技术有限公司 基于持久化redis存储服务的分布式高速存储系统

Similar Documents

Publication Publication Date Title
US9471342B2 (en) Register mapping
CN103227812B (zh) 智能设备中支持断点续传的下载方法和装置
CN101794235B (zh) 基于操作系统网络驱动的无盘计算机启动方法
EP2876556A1 (en) Fast restart of applications using shared memory
CN105468362A (zh) 应用部署方法和云计算系统
CN107368313B (zh) 代码检测方法、装置及电子设备
CN107800730B (zh) 一种虚拟磁盘的扩容方法以及装置
KR20110098567A (ko) 최소 부트 이미지의 생성 방법 및 장치
CN104750492B (zh) 基于嵌入式操作系统的移动设备的开机控制方法及装置
CN110716845B (zh) 一种Android系统的日志信息读取的方法
CN103150257A (zh) 一种内存管理方法和装置
CN107870769A (zh) 操作系统的安装方法及装置
CN103744708A (zh) 一种实现linux操作系统下固定磁盘设备名的方法
CN112068852B (zh) 基于国产服务器的开源软件安装方法、系统及设备和介质
CN103984565A (zh) 文件系统预提取的方法与电子装置以及启动方法
CN112667315A (zh) 游戏引擎编辑器启动方法、装置、电子设备和存储介质
CN109240943B (zh) 地址映射关系反馈方法、装置、设备及可读存储介质
CN110750579A (zh) 一种云数据库Redis的高效内存分布方法及系统
CN105512276B (zh) 一种构建垃圾文件的方法、装置及电子设备
CN105389190A (zh) 一种操作系统启动的方法、装置及系统
CN115291946A (zh) 鸿蒙系统移植方法、装置、电子设备及可读介质
US12072789B2 (en) Resumable instruction generation
CN114968753A (zh) 设备升级测试方法、介质、电子设备及测试系统
CN111338650A (zh) 一种便携式的Livecd中web应用部署方法
KR102456017B1 (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
RJ01 Rejection of invention patent application after publication

Application publication date: 20200204

RJ01 Rejection of invention patent application after publication