CN113590379A - Redis数据持久化方法及系统 - Google Patents
Redis数据持久化方法及系统 Download PDFInfo
- Publication number
- CN113590379A CN113590379A CN202110713996.0A CN202110713996A CN113590379A CN 113590379 A CN113590379 A CN 113590379A CN 202110713996 A CN202110713996 A CN 202110713996A CN 113590379 A CN113590379 A CN 113590379A
- Authority
- CN
- China
- Prior art keywords
- redis
- data
- persistence
- instance
- file system
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种Redis数据持久化方法,其特征在于,包括:根据持久化周期通过外部持久化服务扫描待持久化的全部Redis实例,将扫描获取的数据进行快照存储到文件系统;在持久化周期内通过触发消息将Redis数据修改命令发送给消息总线,外部持久化服务根据接收到的Redis数据修改命令将数据滚动写入文件系统,本发明能够提高Redis数据持久化性能。
Description
技术领域
本发明属于Redis缓存数据库技术应用技术领域,尤其涉及一种Redis数据持久化方法及系统。
背景技术
Redis(Remote Dictionary Server,远程字典服务)是一个高性能键值型内存数据库,具有访问性能高、数据类型丰富、可扩展性好等特点,近年来在互联网领域得到广泛应用。为提高缓存数据的可靠性,Redis提供了两种缓存数据的持久化方式:RDB(在指定的时间间隔能对数据进行快照存储)和AOF(记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据)。RDB持久化方式通过定期拉起子进程来生成快照文件。当Redis缓存数据规模较大时时可能会消耗相对较长的时间,导致Redis查询出现卡顿甚至长时间阻塞,且还会带来大量的网络和磁盘I/O问题,影响Redis对外提供服务的能力;AOF持久化在将每次对服务器的写操作记录在AOF文件中,这样对Redis频繁写操作时会导致AOF的文件增大,严重影响性能,在数据恢复时花费更长时间。
发明内容
为了解决现有技术存在的问题,本发明提供一种Redis数据持久化方法,能够提高Redis数据持久化性能。
本发明所要解决的技术问题是通过以下技术方案实现的:
第一方面,提供了一种Redis数据持久化方法,包括:
根据持久化周期扫描待持久化的全部Redis实例,将扫描获取的数据进行快照存储到文件系统;
在持久化周期内,响应于接收到的Redis数据修改命令,根据接收到的Redis数据修改命令将数据滚动写入文件系统,所述Redis数据修改命令由Redis数据库的数据变化触发生成。
结合第一方面,进一步的,通过守护进程实时监控各Redis实例的运行情况,对异常Redis实例进行数据恢复。
结合第一方面,进一步的,扫描待持久化的全部Redis实例具体为:外部持久化服务通过SCAN命令扫描各Redis实例存储的KEY,每次扫描不超过1000条。
结合第一方面,进一步的,,所述将扫描获取的数据进行快照存储到文件系统具体为:
将扫描获取的数据转换为Redis数据写入命令集,并执行该数据写入命令集将数据以文件快照形式存入分布式文件系统。
结合第一方面,进一步的,所述通过触发消息将Redis数据修改命令发送给消息总线具体为:
代理服务RedisProxy接收全部的Redis数据修改命令并将其发送到分布消息总线Kafka。
结合第一方面,进一步的,所述对异常Redis实例进行数据恢复具体为:
若守护进程监控到某个Redis实例异常退出,则立即重启该异常Redis实例,Redis实例启动后从文件系统中读取最近一个持久化周期的快照文件和触发消息更新的文件加载到内存并提交Redis数据库。
第二方面,提供了一种Redis数据持久化系统,包括:
快照持久化模块:用于根据持久化周期通过外部持久化服务扫描待持久化的全部Redis实例,将扫描获取的数据进行快照存储到文件系统;
触发消息持久化模块:用于在持久化周期内通过触发消息将Redis数据修改命令发送给消息总线,外部持久化服务根据接收到的Redis数据修改命令将数据滚动写入文件系统。
结合第二方面,进一步的,还包括:
数据恢复模块:用于通过守护进程实时监控各Redis实例的运行情况,对异常Redis实例进行数据恢复。
本发明有益效果:本发明中外部快照文件持久化和触发式消息文件持久化服务进程独立与Redis缓存进程,Redis缓存服务主进程不需要进行任何磁盘IO操作,因此不会影响Redis缓存服务端的读写性能。
快照文件持久化和触发式消息文件持久化相结合方式,可以更好的保护数据不丢失。
持久化日志文件的命令通过非常可读的方式进行记录,日志文件紧凑,全量备份,这个特性非常适合灾难恢复或者做灾难性的误删除的紧急恢复。
附图说明
图1是本发明提供的Redis数据持久化方法的流程图;
图2是本发明中Redis数据恢复流程图。
具体实施方式
为了进一步描述本发明的技术特点和效果,以下结合附图和具体实施方式对本发明做进一步描述。
实施例1
本发明所提出的一种Redis数据持久化方法,如图1-2所示,包括:
步骤一、根据持久化周期(缺省为5分钟)通过外部持久化服务扫描待持久化的全部Redis实例,将扫描获取的数据进行快照存储到文件系统。
具体为:
(1)在缓存持久化服务周期内对每个Redis实例中存储的特定KEY,外部持久化服务通过SCAN命令进行周期性扫描直到获取所有的KEY,考虑到对Redis性能的影响,SCAN命令一次扫描不超过1000条,直至cursor为0结束扫描。
对每个Redis实例中存储的特定KEY,通过SCAN命令进行周期性扫描直到获取所有的KEY,考虑到对Redis性能的影响,SCAN命令一次扫描不超过1000条,直至cursor为0结束扫描。
(2)遍历扫描得到的KEY,通过Redis命令逐条读取KEY对应的VALUE(例如读取键值为hash类型命令为:HMGET KEY “01 02 03…59)。
(3)将读到的值组织成Redis的写入命令(例如:HMSET KEY 01 value,status 02value,status值组织成Redis的写入命令,并将命令集写入分布式快照文件系统。
步骤二、基于Redis缓存触发式消息文件持久化服务部署,用于在外部文件快照持久化周期内(缺省为5分钟)由RedisProxy代理服务将修改Redis数据请求(包括每一个写、删除操作请求,不包括查询操作请求)提交给分布式消息总线Kafka,持久化服务会接收修改命令的消息并滚动写入分布式文件系统。
具体为:代理服务RedisProxy接收全部的写、删除redis命令请求并发送到分布消息总线Kafka;
触发式持久化服务TPServer接收并解析Kafka发送的消息内容;
将消息内容组织成Redis的写入命令(例如:HMSET KEY 01 value,status 02value,status成Redis的写入命令,并将其写入触发式持久化文件。
基于Redis缓存数据恢复服务部署,此服务具体流程如图2所示,通过守护进程RedisDaemon在后台实时监控对应节点的运行情况,如果某个Redis节点异常退出,则守护进程检测到对应的Redis节点异常离线后,及时(秒级以内)自动拉起拉起对应的异常节点。同时由redis从分布式文件系统中读取最近一个周期的外部快照文件和触发式更新文件,加载数据到内存,再向Redis服务分批提交数据,由于持久化数据格式遵循RESP协议,Redis可以直接识别并入库,无需进行任何转换。由于该过程不会阻塞Redis处理进程,Redis对外提供服务不会受到影响,直至数据完全恢复。
实施例2
本发明还提供了一种Redis数据持久化系统,包括:
快照持久化模块:用于根据持久化周期通过外部持久化服务扫描待持久化的全部Redis实例,将扫描获取的数据进行快照存储到文件系统;
触发消息持久化模块:用于在持久化周期内通过触发消息将Redis数据修改命令发送给消息总线,外部持久化服务根据接收到的Redis数据修改命令将数据滚动写入文件系统。
数据恢复模块:用于通过守护进程实时监控各Redis实例的运行情况,对异常Redis实例进行数据恢复。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。
Claims (8)
1.一种Redis数据持久化方法,其特征在于,包括:
根据持久化周期扫描待持久化的全部Redis实例,将扫描获取的数据进行快照存储到文件系统;
在持久化周期内,响应于接收到的Redis数据修改命令,根据接收到的Redis数据修改命令将数据滚动写入文件系统,所述Redis数据修改命令由Redis数据库的数据变化触发生成。
2.根据权利要求1所述的一种Redis数据持久化方法,其特征在于,还包括:通过守护进程实时监控各Redis实例的运行情况,对异常Redis实例进行数据恢复。
3.根据权利要求1所述的一种Redis数据持久化方法,其特征在于:扫描待持久化的全部Redis实例具体为:外部持久化服务通过SCAN命令扫描各Redis实例存储的KEY,每次扫描不超过1000条。
4.根据权利要求1所述的一种Redis数据持久化方法,其特征在于,所述将扫描获取的数据进行快照存储到文件系统具体为:
将扫描获取的数据转换为Redis数据写入命令集,并执行该数据写入命令集将数据以文件快照形式存入分布式文件系统。
5.根据权利要求1所述的一种Redis数据持久化方法,其特征在于,所述通过触发消息将Redis数据修改命令发送给消息总线具体为:
代理服务RedisProxy接收全部的Redis数据修改命令并将其发送到分布消息总线Kafka。
6.根据权利要求2所述的一种Redis数据持久化方法,其特征在于:所述对异常Redis实例进行数据恢复具体为:
若守护进程监控到某个Redis实例异常退出,则立即重启该异常Redis实例,Redis实例启动后从文件系统中读取最近一个持久化周期的快照文件和触发消息更新的文件加载到内存并提交Redis数据库。
7.一种Redis数据持久化系统,其特征在于,包括:
快照持久化模块:用于根据持久化周期扫描待持久化的全部Redis实例,将扫描获取的数据进行快照存储到文件系统;
触发消息持久化模块:用于在持久化周期内,响应于接收到的Redis数据修改命令,根据接收到的Redis数据修改命令将数据滚动写入文件系统,所述Redis数据修改命令由Redis数据库的数据变化触发生成。
8.根据权利要求7所述的一种Redis数据持久化方法控制系统,其特征在于,还包括:
数据恢复模块:用于通过守护进程实时监控各Redis实例的运行情况,对异常Redis实例进行数据恢复。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110713996.0A CN113590379A (zh) | 2021-06-25 | 2021-06-25 | Redis数据持久化方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110713996.0A CN113590379A (zh) | 2021-06-25 | 2021-06-25 | Redis数据持久化方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113590379A true CN113590379A (zh) | 2021-11-02 |
Family
ID=78244669
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110713996.0A Pending CN113590379A (zh) | 2021-06-25 | 2021-06-25 | Redis数据持久化方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113590379A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114217899A (zh) * | 2021-12-15 | 2022-03-22 | 平安国际智慧城市科技股份有限公司 | 数据持久化方法、装置、电子设备及存储介质 |
CN114328146A (zh) * | 2021-11-30 | 2022-04-12 | 苏州浪潮智能科技有限公司 | 一种bmc运行状态监控方法、装置、设备及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102902561A (zh) * | 2012-09-13 | 2013-01-30 | 新浪网技术(中国)有限公司 | 数据存储方法及数据存储系统 |
CN105989160A (zh) * | 2015-03-03 | 2016-10-05 | 大唐软件技术股份有限公司 | 一种针对Redis数据库的内存数据持久化方法和装置 |
CN107656971A (zh) * | 2017-09-02 | 2018-02-02 | 国网辽宁省电力有限公司 | 一种基于Redis的智能电网采集监测数据存储方法 |
US20190004906A1 (en) * | 2017-06-30 | 2019-01-03 | Yiftach Shoolman | Methods, systems, and media for controlling append-only file rewrites |
CN112486732A (zh) * | 2020-12-02 | 2021-03-12 | 北京金山云网络技术有限公司 | 基于Redis的数据恢复方法、装置、设备及介质 |
-
2021
- 2021-06-25 CN CN202110713996.0A patent/CN113590379A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102902561A (zh) * | 2012-09-13 | 2013-01-30 | 新浪网技术(中国)有限公司 | 数据存储方法及数据存储系统 |
CN105989160A (zh) * | 2015-03-03 | 2016-10-05 | 大唐软件技术股份有限公司 | 一种针对Redis数据库的内存数据持久化方法和装置 |
US20190004906A1 (en) * | 2017-06-30 | 2019-01-03 | Yiftach Shoolman | Methods, systems, and media for controlling append-only file rewrites |
CN107656971A (zh) * | 2017-09-02 | 2018-02-02 | 国网辽宁省电力有限公司 | 一种基于Redis的智能电网采集监测数据存储方法 |
CN112486732A (zh) * | 2020-12-02 | 2021-03-12 | 北京金山云网络技术有限公司 | 基于Redis的数据恢复方法、装置、设备及介质 |
Non-Patent Citations (1)
Title |
---|
蔡宇等: "调控云运行数据平台分布式缓存关键技术及应用", pages 1 - 6, Retrieved from the Internet <URL:http://www.aeps-info.com/aeps/article/html/20200711002> * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114328146A (zh) * | 2021-11-30 | 2022-04-12 | 苏州浪潮智能科技有限公司 | 一种bmc运行状态监控方法、装置、设备及介质 |
CN114328146B (zh) * | 2021-11-30 | 2023-11-07 | 苏州浪潮智能科技有限公司 | 一种bmc运行状态监控方法、装置、设备及介质 |
CN114217899A (zh) * | 2021-12-15 | 2022-03-22 | 平安国际智慧城市科技股份有限公司 | 数据持久化方法、装置、电子设备及存储介质 |
CN114217899B (zh) * | 2021-12-15 | 2023-10-17 | 深圳平安智慧医健科技有限公司 | 数据持久化方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10884837B2 (en) | Predicting, diagnosing, and recovering from application failures based on resource access patterns | |
CN108664359B (zh) | 一种数据库恢复方法、装置、设备及存储介质 | |
CN111475340B (zh) | 用于创建复制品的方法、装置和计算机程序产品 | |
US9244776B2 (en) | Reducing reading of database logs by persisting long-running transaction data | |
US8055633B2 (en) | Method, system and computer program product for duplicate detection | |
US20120259863A1 (en) | Low Level Object Version Tracking Using Non-Volatile Memory Write Generations | |
US20050262170A1 (en) | Real-time apply mechanism in standby database environments | |
US9471622B2 (en) | SCM-conscious transactional key-value store | |
CN111538463A (zh) | 一种实现内存数据库持久化的方法 | |
CN113590379A (zh) | Redis数据持久化方法及系统 | |
CN111506253B (zh) | 一种分布式存储系统及其存储方法 | |
US9330153B2 (en) | System, method, and computer readable medium that coordinates between devices using exchange of log files | |
US20090157767A1 (en) | Circular log amnesia detection | |
CN111338853B (zh) | 一种基于Linux的数据实时存储系统及方法 | |
US7240065B2 (en) | Providing mappings between logical time values and real time values | |
CN116483284A (zh) | 一种读写虚拟硬盘的方法、装置、介质及电子设备 | |
CN114780489B (zh) | 一种实现分布式块存储底层gc的方法及装置 | |
CN116225779A (zh) | 一种基于预写日志机制提高缓存和数据源数据一致性的方法和装置 | |
CN114003612A (zh) | 针对数据库异常状况的处理方法及处理系统 | |
US20030033440A1 (en) | Method of logging message activity | |
Kuhn et al. | Investigating Redo | |
CN117312240A (zh) | 哈希表重构方法、装置、计算机设备和介质 | |
CN115292270A (zh) | 一种灵活可配的日志文件管控算法 | |
CN115017229A (zh) | 数据库同步方法、装置及电子设备 | |
Kyte et al. | Investigating Redo |
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 |