CN104881494B - 与Redis服务器进行数据同步的方法、装置和系统 - Google Patents

与Redis服务器进行数据同步的方法、装置和系统 Download PDF

Info

Publication number
CN104881494B
CN104881494B CN201510325597.1A CN201510325597A CN104881494B CN 104881494 B CN104881494 B CN 104881494B CN 201510325597 A CN201510325597 A CN 201510325597A CN 104881494 B CN104881494 B CN 104881494B
Authority
CN
China
Prior art keywords
data
redis server
redis
synchronous
server
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
CN201510325597.1A
Other languages
English (en)
Other versions
CN104881494A (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.)
Beijing Hongxiang Technical Service Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing 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 Beijing Qihoo Technology Co Ltd, Qizhi Software Beijing Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201510325597.1A priority Critical patent/CN104881494B/zh
Publication of CN104881494A publication Critical patent/CN104881494A/zh
Application granted granted Critical
Publication of CN104881494B publication Critical patent/CN104881494B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • G06F16/1794Details of file format conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种与Redis服务器进行数据同步的方法、装置和系统。该方法包括:接收Redis服务器发送的全量数据;对全量数据进行解析及存储,并通过日志文件记录来自Redis服务器的增量数据,直至完成与Redis服务器之间的数据同步;其中,当全量数据解析并存储完毕后,开始解析并存储日志文件中记录的增量数据。采用本发明中的方法、装置和系统,即使在全量数据非常庞大、解析耗时很长的情况下也不会耽误增量数据的接收,由此能够确保数据同步的效率,且能够及时、全面地记录来自Redis服务器的全部增量数据,因此,确保了数据同步的可靠性。

Description

与Redis服务器进行数据同步的方法、装置和系统
技术领域
本发明涉及互联网技术领域,具体涉及一种与Redis服务器进行数据同步的方法、装置和系统。
背景技术
Redis存储方式能够灵活支持多种数据类型,因此,越来越多的在线业务开始采用Redis存储方式进行存储。但是,由于Redis存储方式需要占用大量的内存,导致可存储的空间非常有限,由此,迫切地需要将一些不常用的、重要性不高的业务迁移到其他的存储设备中,以便节省内存,提高机器利用效率。
由于Redis服务器中的数据量非常庞大,且Redis服务器上的业务数据经常更新,因此,在将Redis服务器中的业务数据迁移到其他存储设备的过程中,经常会出现Redis服务器上的原始数据还未复制完,就又接收到了新的更新数据,导致其他存储设备很难做到与Redis服务器之间的数据同步,由此无法实现业务的无缝迁移。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的与Redis服务器进行数据同步的方法、装置和系统。
根据本发明的一个方面,提供了一种与Redis服务器进行数据同步的方法,其包括:接收Redis服务器发送的全量数据;对全量数据进行解析及存储,并通过日志文件记录来自Redis服务器的增量数据,直至完成与Redis服务器之间的数据同步;其中,当全量数据解析并存储完毕后,开始解析并存储日志文件中记录的增量数据。
根据本发明的另一方面,提供了一种与Redis服务器进行数据同步的装置,其包括:接收模块,适于接收Redis服务器发送的全量数据以及增量数据;第一存储模块,适于对接收模块接收到的全量数据进行解析及存储;日志模块,适于通过日志文件记录接收模块接收到的来自Redis服务器的增量数据,直至完成与Redis服务器之间的数据同步;第二存储模块,适于在第一存储模块对全量数据解析并存储完毕后,开始解析并存储日志模块中记录的增量数据。
根据本发明的另一方面,提供了一种与Redis服务器进行数据同步的系统,其包括:Redis服务器以及上述的与Redis服务器进行数据同步的装置。
本发明提供的与Redis服务器进行数据同步的方法、装置和系统,能够在对Redis服务器发送的全量数据进行解析及存储的过程中,通过日志文件记录来自Redis服务器的增量数据,直至完成与Redis服务器之间的数据同步。其中,增量数据是指在生成上述全量数据之后进一步增加的数据,其包括在上述全量数据基础上的新增数据和/或修改数据。上述日志文件的主要作用在于:能够记录全量数据解析过程中收到的增量数据,使解析全量数据的过程与接收增量数据的过程能够同时进行。
由此可见,采用本发明中的方法、装置和系统,即使在全量数据非常庞大、解析耗时很长的情况下也不会耽误增量数据的接收,由此能够确保数据同步的效率。而且,由于Redis服务器中用于缓存最新数据的环形缓冲区被写满之后,会将原来的数据覆盖掉,因此,如果不能及时接收到来自Redis服务器的增量数据,则可能会发生数据丢失的情况,而本发明中的日志文件能够及时、全面地记录来自Redis服务器的全部增量数据,因此,确保了数据同步的可靠性。通过本发明中的方法、装置和系统能够实现业务的无缝迁移。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的与Redis服务器进行数据同步的方法流程图;
图2示出了本发明一个具体实施例提供的与Redis服务器进行数据同步的方法流程图;
图3按照时间节点方式描述了图2的步骤S210至步骤S240的实现过程;
图4示出了根据本发明一个实施例的与Redis服务器进行数据同步的装置的结构框图;
图5示出了根据本发明一个实施例的与Redis服务器进行数据同步的系统结构框图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的与Redis服务器进行数据同步的方法流程图,如图1所示,该方法包括如下步骤:
步骤S110:接收Redis服务器发送的全量数据。
其中,上述全量数据为Redis服务器根据接收到的同步请求生成的数据快照文件,在解析并存储上述数据快照文件的过程中,通过多线程并行运行的方式进行解析,并对解析结果为指定类型的数据通过批量写入的方式进行存储,其中,指定类型的数据包括:hash,set,list,和/或zset类型的数据。
步骤S120:对上述全量数据进行解析及存储,并通过日志文件记录来自Redis服务器的增量数据,直至完成与该Redis服务器之间的数据同步。其中,当上述全量数据解析并存储完毕后,开始解析并存储上述日志文件中记录的增量数据。
上述日志文件为自定义格式的文件,其通过不同的日志项分别记录各条增量数据,每个日志项中包含该条增量数据及其对应的同步位移,以及用于对该日志项进行数据校验的校验码。其中,增量数据对应的同步位移用于指示本条增量数据与Redis服务器中用于缓存最新更新数据的环形缓冲区之间的同步关系,能够用来计算同步速度,并判断是否已完成同步;校验码用于确定日志项中存储的数据是否正确,以便提高数据存储的可靠性。
具体地,在步骤S120中,可通过以下方式确定是否完成与Redis服务器之间的数据同步:在解析并存储日志文件中记录的增量数据的过程中,如果进一步接收到来自Redis服务器的增量数据,则计算来自Redis服务器的增量数据中包含的同步位移与日志文件中已解析的增量数据中包含的同步位移之间的位移差,当该位移差小于预设阈值时,确定已完成与Redis服务器之间的数据同步。
可选地,为了实现实时同步,并提高存储效率,当确定已完成与Redis服务器之间的数据同步后,如果进一步接收到来自该Redis服务器的增量数据,则直接存储该增量数据。
本发明提供的与Redis服务器进行数据同步的方法,能够在对Redis服务器发送的全量数据进行解析及存储的过程中,通过日志文件记录来自Redis服务器的增量数据,直至完成与Redis服务器之间的数据同步。采用该方法,即使在全量数据非常庞大、解析耗时很长的情况下也不会耽误增量数据的接收,由此能够确保数据同步的效率。而且,由于Redis服务器中用于缓存最新数据的环形缓冲区被写满之后,会将原来的数据覆盖掉,因此,如果不能及时接收到来自Redis服务器的增量数据,则可能会发生数据丢失的情况,而本发明中的日志文件能够及时、全面地记录来自Redis服务器的全部增量数据,因此,确保了数据同步的可靠性。
下面以一个具体实施例详细描述本发明提供的与Redis服务器进行数据同步的方法。在该具体实施例中,以将Redis服务器中的业务数据无缝迁移至SSDB服务器为例进行说明,本领域技术人员还可以依照本实施例提供的方法实现Redis主服务器与Redis从服务器之间的业务数据的无缝迁移,以及Redis从服务器与Redis从服务器之间的业务数据的无缝迁移,本发明对其具体应用场景不做限定。
图2示出了该具体实施例提供的与Redis服务器进行数据同步的方法流程图,在图2中,各步骤的执行主体是与Redis服务器和SSDB服务器分别相连的同步装置,该同步装置也可以直接集成在SSDB服务器上。该同步装置可通过软件编程或硬件芯片等方式实现。如图2所示,该方法包括如下步骤:
步骤S210:向Redis服务器发送同步请求,接收Redis服务器根据该同步请求返回的全量数据。
其中的同步请求可通过sync命令或psync命令实现,根据该同步请求返回的全量数据为Redis服务器接收到同步请求后生成的数据快照文件,例如RDB文件。该数据快照文件为指定时刻(即接收到同步请求后)存储在Redis服务器上的全部数据的镜像文件。
可选地,为了便于在后续步骤中与Redis服务器进行通信,Redis服务器还可以返回包含用于识别该Redis服务器的主机ID号的同步响应消息。另外,为了便于在后续步骤中计算同步速度并在网络断开后实现断点续传等功能,该同步响应消息中还可以包含上述数据快照文件在环形缓冲区中对应的存储位置。例如,假设环形缓冲区的大小为1000,Redis服务器生成的数据快照文件中已包含了其中的前300个数据,则可以确定该数据快照文件在环形缓冲区中对应的存储位置为300。
步骤S220:对上述全量数据进行解析并存储。
由于全量数据的数据量通常较大,解析耗时较长,因此,为了提高解析效率,本发明通过多个线程并行运行的方式来解析上述数据快照文件。其中,多个线程的具体数量可根据CPU内核数、内存大小等多种指标确定。并且,在解析完成后,对解析结果为指定类型的数据通过批量写入的方式进行存储,以提高存储效率。其中,指定类型的数据包括:hash,set,list,和/或zset类型的数据。具体实现时,可通过python语言来实现本发明中的各个步骤,为了进一步提高解析效率,可以在python程序中引入C的动态链接库,从而利用C的解析工具来实现上述的多线程并行解析方式。
步骤S230:在接收到全量数据之后,通过日志文件记录来自Redis服务器的增量数据,直至完成与Redis服务器之间的数据同步。
其中,步骤S230与步骤S220同时开始执行,且步骤S230一直持续到步骤S220结束之后。也就是说,在解析并存储全量数据的过程中,只要Redis服务器中的数据发生了更新,就会进一步接收到来自Redis服务器的增量数据,通过日志文件来记录这些增量数据;并且,在全量数据解析并存储完毕后,如果Redis服务器中的数据又发生了更新,仍然会进一步接收到来自Redis服务器的增量数据,这时,只要还没有完成与Redis服务器之间的数据同步,就继续通过日志文件记录接收到的来自Redis服务器的增量数据,直至完成与Redis服务器之间的数据同步。其中,判断是否已完成与Redis服务器之间的数据同步时,可灵活通过多种方式实现,例如,可以根据发送增量数据时的时间戳与接收到增量数据时的时间戳的差值来判断,也可以根据增量数据中包含的同步位移等信息来判断,本发明对具体的判断方式不做限定。
上述的日志文件为自定义格式的文件,其通过不同的日志项分别记录各条增量数据,每个日志项中包含该条增量数据及其对应的同步位移,以及用于对该日志项进行数据校验的校验码。例如,该自定义的日志文件为如下格式的AOF文件:"len(cmd)+':'+cmd+':'+len(key)+':'key+':'+len(val)+':'+val+':'+len(offset)+':'+offset+':'+crc",其中cmd,key,val是请求的数据,offset是同步位移(同步offset),crc是校验码。上述日志文件的主要作用在于:第一,能够记录接收到全量数据之后,完成同步之前接收到的全部增量数据,即使在全量数据非常庞大、解析耗时很长的情况下也不会耽误增量数据的接收,由此能够确保数据同步的效率。第二,由于Redis服务器中用于缓存最新数据的环形缓冲区被写满之后,会将原来的数据覆盖掉,因此,如果不能及时接收到来自Redis服务器的增量数据,则可能会发生数据丢失的情况,而本发明中的日志文件能够及时、全面地记录来自Redis服务器的全部增量数据,因此,确保了数据同步的可靠性。
S240:在全量数据解析并存储完毕后,开始解析并存储上述日志文件中记录的增量数据。
上述步骤S240在步骤S220结束之后开始执行,并且,步骤S230与步骤S220和步骤S240并行进行。也就是说,只要全量数据解析并存储完毕,就开始通过步骤S240对步骤S230中的日志文件进行解析及存储,此时,步骤S230仍在继续。另外,在执行步骤S240的过程中,还可以进一步通过如下方式判断是否已完成与Redis服务器之间的数据同步,当判断结果为是时,则终止步骤S230:当通过步骤S230进一步接收到一条来自Redis服务器的增量数据时,计算这条增量数据中包含的同步位移与日志文件中已解析的增量数据中包含的同步位移之间的位移差,当该位移差小于预设阈值时,确定已完成与Redis服务器之间的数据同步。具体实现时,可以在步骤S240解析日志文件的过程中,判断当前已解析的各条增量数据中包含的同步位移的最大值,将其存储为解析位移(parse_offset),每当通过步骤S230进一步接收到一条来自Redis服务器的增量数据时,计算新接收到的这条增量数据中包含的同步位移与解析位移之间的位移差,进而判断是否已同步。
可选地,当确定已同步后,如果进一步接收到来自Redis服务器的增量数据,则可以对该增量数据直接进行存储,而不必再通过日志文件进行记录,从而省去记录及解析日志文件的时间,提高同步效率,做到实时同步。
通过上述的步骤S210至步骤S240就实现了与Redis服务器之间的数据同步。由于上述各个步骤的执行时间有所交叉,因此,为了使本发明中的方法更加清楚,在该方法中还可以根据同步进度来设定不同的状态。例如,将整个同步过程划分为准备(ready)状态、复制全量数据(copy)状态、全量数据复制完成(RDBEND)状态、同步增量数据(SYNC)状态。另外,在图3中按照时间节点的方式描述了步骤S210至步骤S240的实现过程。如图3所示,从t1时间点开始执行步骤S210,向Redis服务器发送同步请求,并接收Redis服务器根据该同步请求返回的全量数据。在t2时间点时,全量数据接收完毕,步骤S210结束。从t2时间点开始,执行步骤S220以及步骤S230,即:一边对全量数据进行解析并存储,一边通过日志文件记录来自Redis服务器的增量数据。在t3时间点时,全量数据解析并存储完毕,步骤S220结束,步骤S230仍在继续。从t3时间点开始执行步骤S240,解析并存储日志文件中记录的增量数据。另外,在执行步骤S240的过程中,进一步判断是否已完成与Redis服务器之间的数据同步,假设在t4时间点时完成了与Redis服务器之间的数据同步,则步骤S230结束,即:从t4时间点开始,接收到来自Redis服务器的增量数据后直接进行存储,而不再通过日志文件记录,因此,日志文件中的日志项不再增加,当解析完日志文件中的全部日志项后,步骤S240自动结束。
通过本发明中的方法能够使SSDB服务器与Redis服务器做到实时同步,从而将Redis服务器中的业务无缝迁移到SSDB服务器中,节省了Redis服务器中的内存,提高了其他业务的访问效率。在本发明中,能够在解析全量数据的同时,接收来自Redis服务器的增量数据,而不必像传统的Redis主从同步方式那样等到全量数据全部解析并存储完毕后才接收增量数据。该方法尤其适用于将Redis服务器中的数据同步到磁盘(而非内存)中,由于磁盘操作速度慢于内存操作速度,因此,在全量数据十分庞大的情况下,解析过程势必会耗费相当一部分时间,如果在这期间无法同时接收增量数据的话,容易导致最开始接收到的同步位移失效(因为redis的环形缓冲区被写满之后会被新数据覆盖掉),从而导致数据丢失,采用本发明提供的方法能够有效地解决上述问题。
图4示出了根据本发明一个实施例的与Redis服务器进行数据同步的装置400的结构框图,其包括:接收模块41、第一存储模块42、日志模块43、以及第二存储模块44。其中,接收模块41适于接收Redis服务器发送的全量数据以及增量数据。第一存储模块42适于对接收模块41接收到的全量数据进行解析及存储。日志模块43适于通过日志文件记录接收模块41接收到的来自Redis服务器的增量数据,直至完成与Redis服务器之间的数据同步。第二存储模块44适于在第一存储模块42对全量数据解析并存储完毕后,开始解析并存储日志模块43中记录的增量数据。
可选地,该装置进一步包括:用于确定是否完成与Redis服务器之间的数据同步的判断模块,在第二存储模块44解析并存储日志文件中记录的增量数据的过程中,如果接收模块进一步接收到来自Redis服务器的增量数据,则判断模块计算来自Redis服务器的增量数据中包含的同步位移与日志文件中已解析的增量数据中包含的同步位移之间的位移差,当位移差小于预设阈值时,确定已完成与Redis服务器之间的数据同步。
可选地,当确定已完成与Redis服务器之间的数据同步后,如果接收模块进一步接收到来自Redis服务器的增量数据,则直接将增量数据存储在第二存储模块中。
上述的全量数据为Redis服务器根据接收到的同步请求生成的数据快照文件,第一存储模块通过多线程并行运行的方式解析数据快照文件,并对解析结果为指定类型的数据通过批量写入的方式进行存储,其中,指定类型的数据包括:hash,set,list,和/或zset类型的数据。上述的日志文件为自定义格式的文件,其通过不同的日志项分别记录各条增量数据,每个日志项中包含该条增量数据及其对应的同步位移,以及用于对该条增量数据进行数据校验的校验码。
图5示出了根据本发明一个实施例的与Redis服务器进行数据同步的系统结构框图,其包括:Redis服务器500以及上述的与Redis服务器进行数据同步的同步装置400。图5以通过同步装置400实现Redis主服务器与SSDB服务器501之间的数据同步为例进行说明。本领域技术人员可以理解的是,同步装置400也能够用来实现Redis主服务器与Redis从服务器之间的数据同步。
本发明提供的与Redis服务器进行数据同步的方法、装置和系统,能够在对Redis服务器发送的全量数据进行解析及存储的过程中,通过日志文件记录来自Redis服务器的增量数据,直至完成与Redis服务器之间的数据同步。其中,增量数据是指在生成上述全量数据之后进一步增加的数据,其包括在上述全量数据基础上的新增数据和/或修改数据。上述日志文件的主要作用在于:能够记录全量数据解析过程中收到的增量数据,使解析全量数据的过程与接收增量数据的过程能够同时进行。
由此可见,采用本发明中的方法、装置和系统,即使在全量数据非常庞大、解析耗时很长的情况下也不会耽误增量数据的接收,由此能够确保数据同步的效率。而且,由于Redis服务器中用于缓存最新数据的环形缓冲区被写满之后,会将原来的数据覆盖掉,因此,如果不能及时接收到来自Redis服务器的增量数据,则可能会发生数据丢失的情况,而本发明中的日志文件能够及时、全面地记录来自Redis服务器的全部增量数据,因此,确保了数据同步的可靠性。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的网站系统信息的识别装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

Claims (13)

1.一种与Redis服务器进行数据同步的方法,用于将Redis服务器中的数据同步到磁盘中,其包括:
接收Redis服务器发送的全量数据;其中,所述全量数据为指定时刻存储在Redis服务器上的全部数据的镜像文件;
对所述全量数据进行解析及存储,在解析及存储所述全量数据的过程中,通过日志文件记录接收到的来自所述Redis服务器的增量数据,直至完成与所述Redis服务器之间的数据同步;
其中,当所述全量数据解析并存储完毕后,开始解析并存储所述日志文件中记录的增量数据;
以及,通过以下方式确定是否完成与所述Redis服务器之间的数据同步:
在解析并存储所述日志文件中记录的增量数据的过程中,如果进一步接收到来自所述Redis服务器的增量数据,则计算所述来自所述Redis服务器的增量数据中包含的同步位移与所述日志文件中已解析的增量数据中包含的同步位移之间的位移差,当所述位移差小于预设阈值时,确定已完成与所述Redis服务器之间的数据同步。
2.根据权利要求1所述的方法,其中,当确定已完成与所述Redis服务器之间的数据同步后,如果进一步接收到来自所述Redis服务器的增量数据,则直接存储所述增量数据。
3.根据权利要求1所述的方法,其中,所述全量数据为所述Redis服务器根据接收到的同步请求生成的数据快照文件,在解析并存储所述数据快照文件的过程中,通过多线程并行运行的方式进行解析,并对解析结果为指定类型的数据通过批量写入的方式进行存储,其中,指定类型的数据包括:hash,set,list,和/或zset类型的数据。
4.根据权利要求1所述的方法,其中,所述日志文件为自定义格式的文件,其通过不同的日志项分别记录各条增量数据,每个日志项中包含该条增量数据及其对应的同步位移,以及用于对该日志项进行数据校验的校验码。
5.根据权利要求1-4任一项所述的方法,其中,通过SSDB服务器存储所述全量数据及增量数据。
6.一种与Redis服务器进行数据同步的装置,用于将Redis服务器中的数据同步到磁盘中,其包括:
接收模块,适于接收Redis服务器发送的全量数据以及增量数据;其中,所述全量数据为指定时刻存储在Redis服务器上的全部数据的镜像文件;
第一存储模块,适于对所述接收模块接收到的全量数据进行解析及存储;
日志模块,适于在解析及存储所述全量数据的过程中,通过日志文件记录所述接收模块接收到的来自所述Redis服务器的增量数据,直至完成与所述Redis服务器之间的数据同步;
第二存储模块,适于在所述第一存储模块对所述全量数据解析并存储完毕后,开始解析并存储所述日志模块中记录的增量数据;
其中,用于确定是否完成与所述Redis服务器之间的数据同步的判断模块,在所述第二存储模块解析并存储所述日志文件中记录的增量数据的过程中,如果所述接收模块进一步接收到来自所述Redis服务器的增量数据,则所述判断模块计算所述来自所述Redis服务器的增量数据中包含的同步位移与所述日志文件中已解析的增量数据中包含的同步位移之间的位移差,当所述位移差小于预设阈值时,确定已完成与所述Redis服务器之间的数据同步。
7.根据权利要求6所述的装置,其中,当确定已完成与所述Redis服务器之间的数据同步后,如果所述接收模块进一步接收到来自所述Redis服务器的增量数据,则直接将所述增量数据存储在所述第二存储模块中。
8.根据权利要求6所述的装置,其中,所述全量数据为所述Redis服务器根据接收到的同步请求生成的数据快照文件,所述第一存储模块通过多线程并行运行的方式解析所述数据快照文件,并对解析结果为指定类型的数据通过批量写入的方式进行存储,其中,指定类型的数据包括:hash,set,list,和/或zset类型的数据。
9.根据权利要求6-8任一项所述的装置,其中,所述日志文件为自定义格式的文件,其通过不同的日志项分别记录各条增量数据,每个日志项中包含该条增量数据及其对应的同步位移,以及用于对该条增量数据进行数据校验的校验码。
10.一种与Redis服务器进行数据同步的系统,其包括:Redis服务器以及如权利要求6-9任一所述的与Redis服务器进行数据同步的装置。
11.根据权利要求10所述的系统,其中,所述Redis服务器为Redis主服务器,所述装置用于实现所述Redis主服务器与Redis从服务器之间的数据同步;或者,所述装置用于实现所述Redis主服务器与SSDB服务器之间的数据同步。
12.一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如权利要求1-5中任一项所述的与Redis服务器进行数据同步的方法对应的操作。
13.一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如权利要求1-5中任一项所述的与Redis服务器进行数据同步的方法对应的操作。
CN201510325597.1A 2015-06-12 2015-06-12 与Redis服务器进行数据同步的方法、装置和系统 Active CN104881494B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510325597.1A CN104881494B (zh) 2015-06-12 2015-06-12 与Redis服务器进行数据同步的方法、装置和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510325597.1A CN104881494B (zh) 2015-06-12 2015-06-12 与Redis服务器进行数据同步的方法、装置和系统

Publications (2)

Publication Number Publication Date
CN104881494A CN104881494A (zh) 2015-09-02
CN104881494B true CN104881494B (zh) 2019-02-19

Family

ID=53948987

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510325597.1A Active CN104881494B (zh) 2015-06-12 2015-06-12 与Redis服务器进行数据同步的方法、装置和系统

Country Status (1)

Country Link
CN (1) CN104881494B (zh)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106682004A (zh) * 2015-11-06 2017-05-17 网宿科技股份有限公司 一种Redis Key管理方法及系统
CN106815275B (zh) * 2015-12-02 2020-11-27 阿里巴巴集团控股有限公司 一种通过备用数据库实现主备数据库同步的方法与设备
CN106846024B (zh) * 2015-12-07 2021-03-30 北京京东尚科信息技术有限公司 基于Redis的优惠券发放方法、系统和计算机可读存储介质
CN105472045A (zh) * 2016-01-26 2016-04-06 北京百度网讯科技有限公司 数据库迁移的方法和装置
CN105808643A (zh) * 2016-02-25 2016-07-27 浪潮通信信息系统有限公司 一种Redis内存数据库刷新的方法
CN105955845A (zh) * 2016-04-26 2016-09-21 浪潮电子信息产业股份有限公司 一种数据恢复方法及装置
CN107391628B (zh) * 2017-06-30 2021-04-09 北京奇虎科技有限公司 数据同步方法及装置
CN109257402B (zh) * 2017-07-14 2021-08-17 阿里巴巴集团控股有限公司 请求量控制方法及设备
CN107741965B (zh) * 2017-09-30 2021-06-29 北京奇虎科技有限公司 数据库同步处理方法、装置、计算设备及计算机存储介质
CN109660583B (zh) * 2017-10-12 2021-09-07 腾讯科技(上海)有限公司 一种信息处理方法及装置、设备、存储介质
CN110019514B (zh) * 2017-11-07 2023-05-09 阿里巴巴集团控股有限公司 数据同步方法、装置以及电子设备
CN108235051B (zh) * 2017-12-29 2020-08-21 福建中金在线信息科技有限公司 直播系统及直播数据的存储和获取方法
CN108052664A (zh) * 2017-12-29 2018-05-18 北京小度信息科技有限公司 数据库存储集群的数据迁移方法和装置
CN110019140B (zh) * 2017-12-29 2021-07-16 华为技术有限公司 数据迁移方法、装置、设备以及计算机可读存储介质
CN108614876B (zh) * 2018-04-26 2021-02-02 武汉斗鱼网络科技有限公司 一种基于Redis数据库的系统和数据处理方法
CN108769212B (zh) * 2018-05-31 2023-04-07 康键信息技术(深圳)有限公司 数据同步方法、装置、计算机设备和存储介质
CN108965383B (zh) * 2018-05-31 2023-03-24 康键信息技术(深圳)有限公司 文件同步方法、装置、计算机设备和存储介质
CN108880779B (zh) * 2018-06-29 2021-12-10 广东星舆科技有限公司 一种基于redis消息通知的电文同步方法
CN109144604A (zh) * 2018-08-02 2019-01-04 山东浪潮通软信息科技有限公司 一种基于Redis的缓存处理办法
CN109241188A (zh) * 2018-09-05 2019-01-18 上海汽车集团股份有限公司 数据的涓流传输方法及装置、存储介质、终端
CN111309800A (zh) * 2018-12-11 2020-06-19 北京京东尚科信息技术有限公司 数据存储、读取的方法和装置
CN109871388A (zh) * 2019-02-19 2019-06-11 北京字节跳动网络技术有限公司 数据缓存方法、装置、终电子设备及存储介质
CN110716984B (zh) * 2019-10-10 2023-06-20 北京字节跳动网络技术有限公司 数据处理方法、装置、电子设备及存储介质
CN111460028A (zh) * 2020-03-09 2020-07-28 拉扎斯网络科技(上海)有限公司 数据传输方法、数据传输装置、存储介质和电子设备
CN111639015B (zh) * 2020-05-22 2023-04-25 赵银波 一种调整解析周期与解析点的stdf快速增量解析方法
CN111881091B (zh) * 2020-06-08 2024-06-25 微梦创科网络科技(中国)有限公司 数据存储方法、装置、电子设备及存储介质
CN113779048A (zh) * 2020-06-18 2021-12-10 北京沃东天骏信息技术有限公司 一种数据处理方法和装置
CN112487028A (zh) * 2020-11-09 2021-03-12 杭州电魂网络科技股份有限公司 服务器数据存储的方法、系统、电子装置和存储介质
CN112434108A (zh) * 2020-11-10 2021-03-02 深圳市明源云科技有限公司 一种数据库同步的方法、装置及设备
CN113885780A (zh) * 2021-02-10 2022-01-04 京东科技控股股份有限公司 数据同步方法、装置、电子设备、系统和存储介质
CN113064906B (zh) * 2021-04-21 2022-05-31 杭州天谷信息科技有限公司 一种Binlog日志数据适配迁移方法和系统
CN113206757B (zh) * 2021-04-25 2022-04-19 烽火通信科技股份有限公司 流式同步网管配置全量数据和增量数据的方法及电子设备
CN113139081B (zh) * 2021-04-27 2023-10-27 中山亿联智能科技有限公司 高效率低延迟上报读取用户在线播放信息的方法
CN113505173B (zh) * 2021-07-08 2024-03-19 上海卓钢链科技有限公司 一种数据采集同步系统与同步方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101923566A (zh) * 2010-06-24 2010-12-22 浙江协同数据系统有限公司 一种基于触发器的数据增量抽取方法
CN102682110A (zh) * 2012-05-10 2012-09-19 北京大学 面向大规模空间信息的高性能缓存设计方法
CN102752372A (zh) * 2012-06-18 2012-10-24 天津神舟通用数据技术有限公司 一种基于文件的数据库同步方法
CN103617176A (zh) * 2013-11-04 2014-03-05 广东电子工业研究院有限公司 一种实现多源异构数据资源自动同步的方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8380657B2 (en) * 2008-09-19 2013-02-19 Oracle International Corporation Techniques for performing ETL over a WAN

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101923566A (zh) * 2010-06-24 2010-12-22 浙江协同数据系统有限公司 一种基于触发器的数据增量抽取方法
CN102682110A (zh) * 2012-05-10 2012-09-19 北京大学 面向大规模空间信息的高性能缓存设计方法
CN102752372A (zh) * 2012-06-18 2012-10-24 天津神舟通用数据技术有限公司 一种基于文件的数据库同步方法
CN103617176A (zh) * 2013-11-04 2014-03-05 广东电子工业研究院有限公司 一种实现多源异构数据资源自动同步的方法

Also Published As

Publication number Publication date
CN104881494A (zh) 2015-09-02

Similar Documents

Publication Publication Date Title
CN104881494B (zh) 与Redis服务器进行数据同步的方法、装置和系统
CN107391628B (zh) 数据同步方法及装置
JP5379711B2 (ja) データ構造に対し並列に実行される複数の動作を含む、実行履歴の正しさを検証するためのコンピュータ実装方法、システム及びコンピュータ・プログラム
CN107391634B (zh) 数据迁移方法及装置
US20200057681A1 (en) Synthesis Path For Transforming Concurrent Programs Into Hardware Deployable on FPGA-Based Cloud Infrastructures
FI3382551T3 (fi) Hajautettu laitteistojäljitys
US7689809B2 (en) Transparent return to parallel mode by rampoline instruction subsequent to interrupt processing to accommodate slave processor not supported by operating system
CN109885857B (zh) 指令发射控制方法、指令执行验证方法、系统及存储介质
US11620215B2 (en) Multi-threaded pause-less replicating garbage collection
US10656850B2 (en) Efficient volume replication in a storage system
JP2012510652A5 (zh)
CN105045632A (zh) 一种多核环境下实现免锁队列的方法和设备
CN111061690B (zh) 一种基于rac的数据库日志文件读取方法和装置
CN112052230A (zh) 多机房数据同步方法、计算设备及存储介质
US20120059997A1 (en) Apparatus and method for detecting data race
CN108205588B (zh) 基于主从结构的数据同步方法及装置
CN116501387B (zh) 一种指令跳转方法、装置、电子设备及可读存储介质
US8375188B1 (en) Techniques for epoch pipelining
Chakraborty et al. Non-blocking PMI extensions for fast MPI startup
US10198784B2 (en) Capturing commands in a multi-engine graphics processing unit
CN106293862B (zh) 一种可扩展标记语言xml数据的解析方法和装置
CN112035418A (zh) 多机房同步方法、计算设备及计算机存储介质
US8701119B1 (en) Parsing XML in software on CPU with multiple execution units
US9509780B2 (en) Information processing system and control method of information processing system
CN113407629A (zh) 数据同步的方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
EXSB Decision made by sipo to initiate substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220725

Address after: 300450 No. 9-3-401, No. 39, Gaoxin 6th Road, Binhai Science Park, Binhai New Area, Tianjin

Patentee after: 3600 Technology Group Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee before: Qizhi software (Beijing) Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20230717

Address after: 1765, floor 17, floor 15, building 3, No. 10 Jiuxianqiao Road, Chaoyang District, Beijing 100015

Patentee after: Beijing Hongxiang Technical Service Co.,Ltd.

Address before: 300450 No. 9-3-401, No. 39, Gaoxin 6th Road, Binhai Science Park, Binhai New Area, Tianjin

Patentee before: 3600 Technology Group Co.,Ltd.