美文网首页
【redis持久化解析】

【redis持久化解析】

作者: 热血趁年华 | 来源:发表于2018-07-06 01:05 被阅读0次

    前言:

    redis持久化是为了在redis服务重启的时候在内存中恢复数据,默认是从aof中恢复数据,redis的持久化策略,第一RDB,第二种AOF.,下文会对两种解析方式进行分析

    RDB:

    定时快照方式持久化,该策略是通过将当前经常中的内存数据进行以快照的方式存储,因为redis是单线程的,所以会通过fork函数生成一个子进程,进行快照存储,该存储一开始是一个临时文件,写入成功后会将其名字改为rdb为后缀的文件,该操作是原子性操作。但是通过rdb持久化会丢失数据,例如在上一次快照之后,下一次快照之前,redis出现非正常退出,那么这段时间的内存数据就会丢失。

    触发条件:手动触发,自动触发    

    手动触发命令:

    save: 直接将redis实例中的数据快照以rdb文件保存到磁盘,此时会阻塞主进程,影响处理客户端请求,基本被废弃不用

    bgsave: 此时redis会通过fork函数生成子进程,处理快照任务,服务器继续处理客户端的请求。推荐使用此方法

    注意:fork函数生成子进程的时候也会阻塞主进程,但只是临时的,一旦生成完毕,主进程就可以处理客户端请求,而save是在整个save期间都会阻塞主进程。

    自动触发:下文的配置,在redis.cof中配置

    AOF

    语句追加到一个文件的持久化方式,其实就是对内存数据的写操作指令记录在文件中,通过该操作会发现文本文件不断增大,所以有提供bgrewriteaof操作,类似快照的方式。默认每秒写入一次,也可以选择每次操作一次写入一次。

    总结,在恢复数据的方式上,rdb数据更快一些,两种方式都可以同时使用,但是需要注意,当开启rdb持久化的时候,当系统正常重启时,会自动执行一次save操作,但是恢复数据缺使用的时aof中的数据。如果两者的数据出现偏差,那么会产生比较严重的问题,这个需要格外注意。

    常用配置

    RDB持久化配置

    Redis会将数据集的快照dump到dump.rdb文件中。此外,我们也可以通过配置文件来修改Redis服务器dump快照的频率,在打开6379.conf文件之后,我们搜索save,可以看到下面的配置信息:

    save 900 1              #在900秒(15分钟)之后,如果至少有1个key发生变化,则dump内存快照。

    save 300 10            #在300秒(5分钟)之后,如果至少有10个key发生变化,则dump内存快照。

    save 60 10000        #在60秒(1分钟)之后,如果至少有10000个key发生变化,则dump内存快照。

    AOF持久化配置

    在Redis的配置文件中存在三种同步方式,它们分别是:

    appendfsync always     #每次有数据修改发生时都会写入AOF文件。

    appendfsync everysec  #每秒钟同步一次,该策略为AOF的缺省策略。

    appendfsync no          #从不同步。高效但是数据不会被持久化

    要想不丢失数据,最好的方式是做好数据备份

    相关文章

      网友评论

          本文标题:【redis持久化解析】

          本文链接:https://www.haomeiwen.com/subject/ibnmuftx.html