Redis持久化方法和装置与流程

xiaoxiao9月前  34


本公开的实施例涉及计算机,具体涉及redis持久化方法和装置。


背景技术:

1、现在越来越多的业务在使用redis时,不仅仅当缓存在使用,而是把它当数据库在使用,这样对redis数据的可靠性要求也会变得更高。一般提升redis数据可靠性的方式有两种:多副本和持久化。

2、目前开源redis提供两种持久化方式:rdb(redis database,全量内存快照)和aof(append only file,写入操作记录)。

3、rdb持久化方式是:在某个时间点,将redis的内存转存一份到磁盘文件上。已使用内存越大,所需时间越长,且占用一定量的cpu和内存。因此频繁做rdb持久化动作占用过多的cpu和内存资源,对线上业务有比较大的影响。如果两次rdb持久化间隔时间越长,redis宕机后丢失的数据就越多。rdb存储二进制数据,没有存储写入操作记录,不利于运维分析和问题排查。

4、aof持久化方式是:将redis所有的写入操作都追加存储到磁盘文件上,当文件增张到一定量时会进行重写,之前写入到文件的操作记录就会丢失掉,因此无法保存完整的写入记录,不利于问题排查和指定时间恢复数据。


技术实现思路

1、本公开的实施例提出了redis持久化方法和装置。

2、第一方面,本公开的实施例提供了一种redis持久化方法,包括:生成全量内存快照文件;将写入的操作命令以追加的方式存储到操作记录文件;通过固定时间间隔或文件大小对所述操作记录文件进行切割,生成新操作记录文件,用于继续写入操作命令;若写入的操作命令累计达到预定阈值,生成新全量内存快照文件。

3、在一些实施例中,所述方法还包括:根据最新的全量内存快照文件和相关联的操作记录文件恢复数据。

4、在一些实施例中,所述方法还包括:响应于检测到全量内存快照文件已生成,在磁盘上生成用于存储文件的目录,其中,所述目录以全量内存快照文件的生成时间命名;将所述全量内存快照文件、所述操作记录文件和所述新操作记录文件存储到所述目录中,其中,所述目录下的每个文件具有与所述目录相同的文件名前辍,每个文件的文件名后辍包括生成顺序编号。

5、在一些实施例中,所述方法还包括:响应于检测到主从全量同步或者通过备份恢复数据,所述目录下的每个文件的文件名后辍从0重新开始编号。

6、在一些实施例中,所述方法还包括:创建redis启动时默认加载的数据文件的软连接,连接到最近一次生成的全量内存快照文件。

7、在一些实施例中,所述方法还包括:实时的将全量内存快照文件和操作记录文件都存储到第三方存储。

8、在一些实施例中,所述方法还包括:在进行切割的操作记录文件的末尾追加一条记录下一个文件地址的命令。

9、第二方面,本公开的实施例提供了一种redis持久化装置,包括:快照单元,被配置成生成内存数据的全量内存快照文件;追加单元,被配置成将写入的操作命令以追加的方式存储到操作记录文件;切割单元,被配置成通过固定时间间隔或文件大小对所述操作记录文件进行切割,生成新操作记录文件,用于继续写入操作命令;更新单元,被配置成若写入的操作命令累计达到预定阈值,生成内存数据的新全量内存快照文件。

10、在一些实施例中,所述装置还包括恢复单元,被配置成:根据最新的全量内存快照文件和相关联的操作记录文件恢复数据。

11、在一些实施例中,所述装置还包括索引单元,被配置成:响应于检测到全量内存快照文件已生成,在磁盘上生成用于存储文件的目录,其中,所述目录以全量内存快照文件的生成时间命名;将所述全量内存快照文件、所述操作记录文件和所述新操作记录文件存储到所述目录中,其中,所述目录下的每个文件具有与所述目录相同的文件名前辍,每个文件的文件名后辍包括生成顺序编号。

12、在一些实施例中,所述索引单元进一步被配置成:响应于检测到主从全量同步或者通过备份恢复数据,所述目录下的每个文件的文件名后辍从0重新开始编号。

13、在一些实施例中,所述装置还包括连接单元,被配置成:创建redis启动时默认加载的数据文件的软连接,连接到最近一次生成的全量内存快照文件。

14、在一些实施例中,所述装置还包括存储单元,被配置成:实时的将全量内存快照文件和操作记录文件都存储到第三方存储。

15、在一些实施例中,所述切割单元进一步被配置成:在进行切割的操作记录文件的末尾追加一条记录下一个文件地址的命令。

16、第三方面,本公开的实施例提供了一种电子设备,包括:一个或多个处理器;存储装置,其上存储有一个或多个计算机程序,当所述一个或多个计算机程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面中任一项所述的方法。

17、第四方面,本公开的实施例提供了一种计算机可读介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现如第一方面中任一项所述的方法。

18、本公开的实施例提供的redis持久化,将写入的操作命令以追加的方式存储到磁盘文件,通过固定时间间隔或文件大小对写入磁盘文件进行拆分,当写入操作命令累计达到一定大小时会生成一个新的全量快照。恢复数据时可通过最近一次全量快照+若干增量文件来完整恢复数据。同时,保留了完整的写入操作记录,供运维分析和排查问题时使用。

19、应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。



技术特征:

1.一种redis持久化方法,包括:

2.根据权利要求1所述的方法,其中,所述方法还包括:

3.根据权利要求1所述的方法,其中,所述方法还包括:

4.根据权利要求3所述的方法,其中,所述方法还包括:

5.根据权利要求1所述的方法,其中,所述方法还包括:

6.根据权利要求1所述的方法,其中,所述方法还包括:

7.根据权利要求1所述的方法,其中,所述方法还包括:

8.一种redis持久化装置,包括:

9.一种电子设备,包括:

10.一种计算机可读介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1-7中任一项所述的方法。


技术总结
本公开的实施例公开了Redis持久化方法和装置。该方法的具体实施方式包括:生成内存数据的全量内存快照文件;将写入的操作命令以追加的方式存储到操作记录文件;通过固定时间间隔或文件大小对所述操作记录文件进行切割,生成新操作记录文件,用于继续写入操作命令;若写入的操作命令累计达到预定阈值,生成内存数据的新全量内存快照文件。该实施方式能够提升Redis数据可靠性,同时还能方便运维分析和问题排查。

技术研发人员:黄俊红
受保护的技术使用者:京东科技信息技术有限公司
技术研发日:
技术公布日:2024/9/23

最新回复(0)