CN108614876B - 一种基于Redis数据库的系统和数据处理方法 - Google Patents

一种基于Redis数据库的系统和数据处理方法 Download PDF

Info

Publication number
CN108614876B
CN108614876B CN201810389533.1A CN201810389533A CN108614876B CN 108614876 B CN108614876 B CN 108614876B CN 201810389533 A CN201810389533 A CN 201810389533A CN 108614876 B CN108614876 B CN 108614876B
Authority
CN
China
Prior art keywords
data
redis
redis database
writing
backup
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.)
Active
Application number
CN201810389533.1A
Other languages
English (en)
Other versions
CN108614876A (zh
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.)
Wuhan Douyu Network Technology Co Ltd
Original Assignee
Wuhan Douyu Network 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 Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN201810389533.1A priority Critical patent/CN108614876B/zh
Publication of CN108614876A publication Critical patent/CN108614876A/zh
Application granted granted Critical
Publication of CN108614876B publication Critical patent/CN108614876B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Hardware Redundancy (AREA)

Abstract

一种基于Redis数据库的系统,包括:主Redis数据库,其包括位于存储装置的主Redis增量文件;备份Redis数据库,其包括位于存储装置的备份Redis增量文件;第一写入模块,用于将数据写入主Redis数据库中;第二写入模块,用于在所述第一写入模块工作的同时,将所述数据写入所述备份Redis数据库中;第三写入模块,用于将所述数据采用每隔1秒同步的方式写入所述主Redis增量文件中;第四写入模块,用于将所述数据采用持续同步的方式写入所述备份Redis增量文件中。

Description

一种基于Redis数据库的系统和数据处理方法
技术领域
本发明涉及数据通信的技术领域,更具体地,涉及一种基于Redis数据库的系统和数据处理方法。
背景技术
Redis数据库将数据存储在内存,直接在内存中读取数据进行相应的操作处理,由于内存的数据读写速度要高出磁盘几个数量级,Redis数据库通过将数据存储在内存能够极大地提高数据的处理效率。
内存数据具有断电丢失的特性,一旦机器发生故障或重启时,内存中的数据将全部丢失,因而,如何确保内存数据的安全性是内存数据库需要解决的问题,Redis数据库提供了快照文件(RDB)和增量文件(AOF)两种方式确保内存数据的安全性。其中快照文件对Redis的影响很小,但是可靠性较差,一般对数据要求较高的场景应用较少。
增量文件是将Redis数据库的每次写操作都保持在一个增量文件,由于增量文件中保存了每次的写操作,可以很好地确保数据的安全性,然而,增量文件是不断地积累Redis数据库的写操作,随时时间的推移,增量文件会变得越来越大,占用大量的存储空间。
发明内容
针对上述问题中的至少一个,作为本发明的一个方面,提出了一种基于Redis数据库的系统,包括:
主Redis数据库,其包括位于存储装置的主Redis增量文件;
备份Redis数据库,其包括位于存储装置的备份Redis增量文件;
第一写入模块,用于将数据写入主Redis数据库中;
第二写入模块,用于在所述第一写入模块工作的同时,将所述数据写入所述备份Redis数据库中;
第三写入模块,用于将所述数据采用每隔1秒同步的方式写入所述主Redis增量文件中;
第四写入模块,用于将所述数据采用持续同步的方式写入所述备份Redis增量文件中。
在一些实施例中,当所述主Redis数据库发生宕机时,将所述备份Redis数据库的增量文件中最近1秒写入的数据合并到所述主Redis数据库的增量文件后,以完成数据恢复。
在一些实施例中,将写入所述备份Redis数据库的增量文件中的数据设置为3s过期。
其中,所述第一写入模块的工作方式为:调用分叉函数创建子进程,由所述子进程将写入内存的数据每隔1秒同步写入所述主Redis数据库的增量文件中;
所述第二写入模块的工作方式为:调用分叉函数创建子进程,由所述子进程将写入内存的数据持续同步写入所述备用Redis数据库的增量文件中。
作为本发明的另一个方面,提出了一种数据处理方法,所述方法包括如下步骤:
在主Redis数据库写入数据,同时将所述数据以每隔1秒同步的方式写入主Redis数据库的增量文件;
同时,将所述数据写入备份Redis数据库,同时将所述数据采用持续同步的方式写入备份Redis数据库的增量文件。
在一些实施例中,所述方法还包括:当主Redis数据库发生宕机时,将备份Redis数据库的增量文件中最近1秒写入的数据合并到主Redis数据库的增量文件后,以完成数据恢复。
在一些实施例中,将写入备份Redis数据库的增量文件中的数据设置为3s过期。
所述每隔1秒同步的方式具体包括:调用分叉函数创建子进程,由所述子进程将写入内存的数据每隔1秒同步写入主Redis数据库的增量文件中;
所述持续同步的方式具体包括:调用分叉函数创建子进程,由所述子进程将写入内存的数据持续同步写入备用Redis数据库的增量文件中。
本发明还提供了一种计算机可读存储介质,其上存储有可执行指令,所述可执行指令在由处理器执行时,实现根据权利要求6-9中的任一项所述的数据处理方法的步骤。
基于上述技术方案可知,本发明至少取得了以下有益效果中的一个:
本发明通过采用主Redis数据库和备份Redis数据库双写入的方案,既保证了主Redis数据库能够高效地处理业务,同时弥补了每隔1秒同步的配置下发生宕机后会丢失近1秒数据的问题,保证了主Redis宕机时能够同步恢复所有的数据操作,提高了系统的数据安全性和健壮性。
附图说明
图1为根据本发明的一个实施例的基于Redis数据库的系统示意图;
图2为根据本发明的一个实施例的数据处理方法流程图;
图3为根据本发明的实施例的计算机可读存储介质的示意图;
图4为根据本发明的一个优选实施例的数据处理方法流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将对本发明的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于所描述的本发明的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
除非另外定义,本发明使用的技术术语或者科学术语应当为本发明所属领域内具有一般技能的人士所理解的通常意义。
下面,通过以下具体实施例分别对本申请的方案进行详细介绍。
增量文件(AOF)的操作是将对Redis数据库的数据写入操作或者数据删除操作等数据处理同步到到磁盘上的增量文件中,使得对Redis数据库的处理进行备份。增量文件操作方式有如下三种:持续同步(always)、每隔1秒同步(everysec)和不主动同步(no)。持续同步策略是将对Redis数据库的操作的数据持续的时间不间断的同步到磁盘的增量文件,并立即同步到磁盘,数据可靠性最高,但是对Redis性能影响很大;每隔1秒同步策略是对Redis数据库的操作的数据每隔1秒钟一次的同步到磁盘的增量文件,这种方式效率较高,数据可靠性也较高,但是Redis宕机后可能会丢失近一秒的数据;不主动同步策略是从不主动将对Redis数据库的操作的数据同步到磁盘的增量文件,可靠性差。
参照图1,示出了根据本发明的一个实施例的基于Redis数据库的系统示意图,该系统包括:
主Redis数据库1,其包括位于存储装置的主Redis增量文件2;
备份Redis数据库3,其包括位于存储装置的备份Redis增量文件4;其中,所述存储装置可以为磁盘;
第一写入模块5,用于将数据写入主Redis数据库1中;
第二写入模块6,用于在第一写入模块5工作的同时,将数据写入备份Redis数据库3中;
第三写入模块7,用于将数据采用每隔1秒同步的方式写入主Redis增量文件2中;
第四写入模块8,用于将数据采用持续同步的方式写入备份Redis增量文件4中。
其中,所述每隔1秒同步的方式具体为,开启增量文件的每隔1秒同步策略,每隔1秒同步一次,将Redis数据库的数据同步到存储装置。
其中,所述持续同步的方式具体为,开启增量文件的持续同步策略,记录Redis数据库的每一次数据,并立即同步到存储装置。
本实施例中,当主Redis数据库1发生宕机时,将备份Redis数据库3的增量文件4最近1秒写入的数据合并到主Redis数据库1的增量文件2后,以完成数据恢复。
本实施例中,将写入备份Redis数据库3的增量文件4中的数据设置为3s过期,即写入备份Redis数据库3的增量文件4中的数据将在3s后删除。在其他实施例中,该设置也可以为2s,或者设置成其他时间。
其中,所述第三写入模块7的工作方式为:调用分叉函数创建子进程,由所述子进程将写入内存的数据每隔1秒同步写入主Redis数据库1的增量文件2中。
其中,所述第四写入模块8的工作方式为:调用分叉函数创建子进程,由所述子进程将写入内存的数据持续同步写入备用Redis数据库3的增量文件4中。
另一方面,参照图2,根据本发明的一个实施例,提出了一种数据处理方法,所述方法包括如下步骤:
S10,在主Redis数据库写入数据,同时将数据以每隔1秒同步的方式写入主Redis数据库的增量文件;
S20,同时,将所述数据写入备份Redis数据库,同时将数据采用持续同步的方式写入备份Redis数据库的增量文件。
本发明实施例的核心构思之一在于,充分利用增量文件的优点,将数据同时写入主Redis数据库和备份Redis数据库,并且主Redis数据库开启增量文件的每隔1秒同步策略,备份Redis数据库开启增量文件的持续同步策略。既保证了主Redis数据库能够高效地处理业务,同时弥补了每隔1秒同步的配置下发生宕机后会丢失近1秒数据的问题,保证了主Redis宕机时能够同步恢复所有的数据操作,提高了系统的数据安全性和健壮性。
本实施例中,所述方法还可以包括:当主Redis数据库发生宕机时,将备份Redis数据库的增量文件中最近1秒写入的数据合并在主Redis数据库的增量文件后,以完成数据恢复。此时恢复出的Redis数据已经包含了宕机发生前的所有数据,可保证数据的完全性,保证业务能无缝衔接运行。
本实施例中,将数据写入备份Redis数据库的增量文件的同时,将用于操作增量文件的数据的参数设置为3s过期,即写入备份Redis数据库的增量文件中的数据将在3s后删除。在其他实施例中,也可以将该参数设置为2s过期,或者设置成其他时间。这样,既保证了将最近操作复制在备份Redis数据库的增量文件上,同时增量文件不占用过多的内存资源;由于备份Redis数据库仅仅作为备用的用途,而不承担其他业务用途,因此对增量文件采用持续同步的配置对系统的运行不会产生过多的不良影响。
本实施例中,所述每隔1秒同步的方式具体包括:调用分叉函数创建子进程,由所述子进程将写入内存的数据每隔1秒同步写入主Redis数据库的增量文件中。
所述持续同步的方式具体包括:调用分叉函数创建子进程,由所述子进程将写入内存的数据持续同步写入备用Redis数据库的增量文件中。
基于同一发明构思,参考图3所示,本发明的实施例还提供一种计算机可读存储介质201,其上存储有可执行指令202,可执行指令202在由一个或多个处理器执行时,可以实现如上实施例的任一种方法的步骤。
参照图4,示出了根据本发明的一个优选实施例的数据处理方法流程,具体包括:
S1a,在主Redis数据库写入数据,同时将数据以每隔1秒同步的方式写入主Redis数据库的增量文件;
S1b,与S1a步骤同时,将数据写入备份Redis数据库,同时将数据采用持续同步的方式写入备份Redis数据库的增量文件;
S2,将写入备份Redis增量文件中的数据设置为3s过期,即写入备份Redis数据库的增量文件中的数据将在3s后删除;
S3,主Redis数据库发生宕机;
S4,将备份Redis数据库的增量文件中最近1秒写入的数据合并在主Redis数据库的增量文件后;
S5,启动主Redis数据库数据恢复,此时恢复出的Redis数据已经包含了宕机发生前的所有数据,可保证数据的完全性,确保业务能无缝衔接运行。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种基于Redis数据库的系统,包括:
主Redis数据库,其包括位于存储装置的主Redis增量文件;
备份Redis数据库,其包括位于存储装置的备份Redis增量文件;
第一写入模块,用于将数据写入主Redis数据库中;
第二写入模块,用于在所述第一写入模块工作的同时,将所述数据写入所述备份Redis数据库中;
第三写入模块,用于将所述数据采用每隔1秒同步的方式写入所述主Redis增量文件中;
第四写入模块,用于将所述数据采用持续同步的方式写入所述备份Redis增量文件中;
其中,当所述主Redis数据库发生宕机时,将所述备份Redis增量文件中最近1秒写入的数据合并到所述主Redis增量文件后,以完成数据恢复。
2.根据权利要求1所述的系统,其中,将写入所述备份Redis增量文件中的数据设置为3s过期。
3.根据权利要求1所述的系统,其中,所述第三写入模块的工作方式为:调用分叉函数创建子进程,由所述子进程将所述数据每隔1秒同步写入所述主Redis增量文件中。
4.根据权利要求1所述的系统,其中,所述第四写入模块的工作方式为:调用分叉函数创建子进程,由所述子进程将所述数据持续同步写入所述备用Redis增量文件中。
5.一种数据处理方法,其中,所述方法包括如下步骤:
在主Redis数据库写入数据,同时将所述数据以每隔1秒同步的方式写入主Redis数据库的增量文件;
同时,将所述数据写入备份Redis数据库,同时将所述数据采用持续同步的方式写入备份Redis数据库的增量文件。
当主Redis数据库发生宕机时,将备份Redis数据库的增量文件中最近1秒写入的数据合并在主Redis数据库的增量文件后,以完成数据恢复。
6.根据权利要求5所述的方法,其中,将写入所述备份Redis数据库的增量文件中的数据设置为3s过期。
7.根据权利要求5所述的方法,所述每隔1秒同步的方式具体包括:调用分叉函数创建子进程,由所述子进程将写入内存的数据每隔1秒同步写入主Redis数据库的增量文件中;
所述持续同步的方式具体包括:调用分叉函数创建子进程,由所述子进程将写入内存的数据持续同步写入备用Redis数据库的增量文件中。
8.一种计算机可读存储介质,其上存储有可执行指令,所述可执行指令在由处理器执行时,实现根据权利要求5-7中的任一项所述的数据处理方法的步骤。
CN201810389533.1A 2018-04-26 2018-04-26 一种基于Redis数据库的系统和数据处理方法 Active CN108614876B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810389533.1A CN108614876B (zh) 2018-04-26 2018-04-26 一种基于Redis数据库的系统和数据处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810389533.1A CN108614876B (zh) 2018-04-26 2018-04-26 一种基于Redis数据库的系统和数据处理方法

Publications (2)

Publication Number Publication Date
CN108614876A CN108614876A (zh) 2018-10-02
CN108614876B true CN108614876B (zh) 2021-02-02

Family

ID=63660800

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810389533.1A Active CN108614876B (zh) 2018-04-26 2018-04-26 一种基于Redis数据库的系统和数据处理方法

Country Status (1)

Country Link
CN (1) CN108614876B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110389988A (zh) * 2019-07-30 2019-10-29 四川虹魔方网络科技有限公司 一种实时高效的用户数据处理方法及系统
CN111026783A (zh) * 2019-10-22 2020-04-17 无锡天脉聚源传媒科技有限公司 一种防卡死的数据存储方法、系统及装置
CN110941512B (zh) * 2019-11-22 2024-02-20 广东小天才科技有限公司 redis增量复制方法及装置、终端设备和存储介质
CN111026764B (zh) * 2019-12-13 2023-08-11 上海米哈游网络科技股份有限公司 一种数据存储方法、装置、电子产品及存储介质
CN112395344A (zh) * 2020-12-03 2021-02-23 中冶南方工程技术有限公司 一种plc数据采集管理系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101719165A (zh) * 2010-01-12 2010-06-02 山东高效能服务器和存储研究院 一种实现数据库高效快速备份的方法
EP2571171A2 (en) * 2011-09-13 2013-03-20 Exagrid Systems, Inc. Systems and methods for version chain clustering
WO2014100492A2 (en) * 2012-12-19 2014-06-26 Microsoft Corporation Main-memory database checkpointing
CN104166605A (zh) * 2014-08-18 2014-11-26 四川航天系统工程研究所 基于增量数据文件的数据备份方法及系统
CN107506260A (zh) * 2017-07-27 2017-12-22 南京南瑞集团公司 一种动态分块数据库增量备份方法
CN107515801A (zh) * 2017-09-13 2017-12-26 绿金在线电子商务有限公司 一种基于关系型数据库的数据自动修复方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100390747C (zh) * 2006-02-20 2008-05-28 南京联创科技股份有限公司 全程化实时系统中基于内存数据库的软双机备份方法
CN102609337A (zh) * 2012-01-19 2012-07-25 北京神州数码思特奇信息技术股份有限公司 一种内存数据库快速数据恢复方法
CN102902561B (zh) * 2012-09-13 2016-01-20 新浪网技术(中国)有限公司 数据存储方法及数据存储系统
CN105989160A (zh) * 2015-03-03 2016-10-05 大唐软件技术股份有限公司 一种针对Redis数据库的内存数据持久化方法和装置
CN104881494B (zh) * 2015-06-12 2019-02-19 北京奇虎科技有限公司 与Redis服务器进行数据同步的方法、装置和系统
US10809998B2 (en) * 2016-02-12 2020-10-20 Nutanix, Inc. Virtualized file server splitting and merging

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101719165A (zh) * 2010-01-12 2010-06-02 山东高效能服务器和存储研究院 一种实现数据库高效快速备份的方法
EP2571171A2 (en) * 2011-09-13 2013-03-20 Exagrid Systems, Inc. Systems and methods for version chain clustering
WO2014100492A2 (en) * 2012-12-19 2014-06-26 Microsoft Corporation Main-memory database checkpointing
CN104166605A (zh) * 2014-08-18 2014-11-26 四川航天系统工程研究所 基于增量数据文件的数据备份方法及系统
CN107506260A (zh) * 2017-07-27 2017-12-22 南京南瑞集团公司 一种动态分块数据库增量备份方法
CN107515801A (zh) * 2017-09-13 2017-12-26 绿金在线电子商务有限公司 一种基于关系型数据库的数据自动修复方法

Also Published As

Publication number Publication date
CN108614876A (zh) 2018-10-02

Similar Documents

Publication Publication Date Title
CN108614876B (zh) 一种基于Redis数据库的系统和数据处理方法
CN106407356B (zh) 一种数据备份方法及装置
US7043504B1 (en) System and method for parallel primary and secondary backup reading in recovery of multiple shared database data sets
US6594676B1 (en) System and method for recovery of multiple shared database data sets using multiple change accumulation data sets as inputs
CN108416040B (zh) 一种数据库修复方法、装置、终端设备及存储介质
CN110543386B (zh) 一种数据存储方法、装置、设备和存储介质
CN109189860A (zh) 一种基于Kubernetes系统的MySQL主备增量同步方法
CN111078667B (zh) 一种数据迁移的方法以及相关装置
CN102955720A (zh) 一种提高ext文件系统稳定性的方法
CN105550062A (zh) 基于持续数据保护与时间点浏览恢复的数据回流方法
CN104461773A (zh) 一种虚拟机备份去重的方法
CN111949445B (zh) 一种增量备份数据存储方法、装置、设备、产品
CN111666266A (zh) 一种数据迁移方法及相关设备
CN104750755A (zh) 一种数据库主备切换后的数据回补方法及系统
WO2017028705A1 (zh) 计算机系统任务备份方法、系统状态恢复方法及其装置
CN106502830B (zh) 一种基于Btrfs文件系统的系统备份还原方法
CN113157670B (zh) 数据库的数据迁移方法及系统
CN107621994B (zh) 一种数据快照创建的方法及装置
US10296517B1 (en) Taking a back-up software agnostic consistent backup during asynchronous replication
CN117763046A (zh) 集群间数据同步的方法、装置、设备及存储介质
CN114020686A (zh) 基于差异日志的文件快照同步方法、系统、设备和介质
CN111459720A (zh) 一种基于事务日志的Mysql数据恢复方法
CN111858076B (zh) 一种目标守护进程同步方法和装置
CN114490570A (zh) 生产数据同步方法、装置、数据同步系统及服务器
CN109614266B (zh) 一种数据同步方法及装置

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
GR01 Patent grant
GR01 Patent grant