美文网首页
三 redis的持久化分析

三 redis的持久化分析

作者: 爱编程的凯哥 | 来源:发表于2019-02-25 16:06 被阅读25次

    目标

    分析redis持久化方法及注意事项

    持久化方法

    • rdb

    RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是fork一个子进程,先将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储。

    • aof

    AOF持久化以日志的形式记录服务器所处理的每一个写、删除操作,查询操作不会记录,以文本的方式记录,可以打开文件看到详细的操作记录

    图示:


    redis持久化

    因为aof操作记录了用户的所有操作行为,所以文件会越来越大,redis提供了重写机制,进行优化,其流程如下:

    1. 手动调用重写或系统自动检测文件超过配置,发起aof重写操作
    2. redis主进程fork出重写子进程,子进程带有主进程的数据副本,保证数据的安全性,将数据写入aof重写文件中
    3. redis-server此时进行双写操作,再有用户写入指令,会同时写入aof缓冲区,和aof重写缓冲区.
    4. 子进程aof重写文件写完后,通知主进程
    5. 主进程此时会阻塞客户端请求,将重写缓冲区内数据写入新文件,然后替换原有aof文件
    6. 子进程销毁,主进程继续工作

    优缺点:

    rdb优点:

    1. 文件少,容易恢复,很容易在移植到其他系统
      2.性能高,rdb操作只需要fork出子进程进行快照,并不影响主进程,避免进程间的io通信操作
    2. 相比于aof,rdb文件中存的是和内存数据一样的格式,恢复数据启动更快

    rdb缺点:

    1. 如果你想保证数据的高可用性,即最大限度的避免数据丢失,那么RDB将不是一个很好的选择。因为系统一旦在定时持久化之前出现宕机现象,此前没有来得及写入磁盘的数据都将丢失。

    2. 由于RDB是通过fork子进程来协助完成数据持久化工作的,因此,如果当数据集较大时,可能会导致整个服务器停止服务几百毫秒,甚至是1秒钟。

    aof优点:

    1. 该机制可以带来更高的数据安全性,即数据持久性
    2. 通过操作日志的形式进行数据行为记录,即使出现写入数据过程中宕机,一样可以通过aof日志文件恢复数据的一致性
    3. 格式清晰,可以很好的分析用户操作行为.

    aof缺点:
    1.AOF在运行效率上往往会慢于RDB。总之,每秒同步策略的效率是比较高的,同步禁用策略的效率和RDB一样高效。

    1. 对于相同数量的数据集而言,AOF文件通常要大于RDB文件。RDB 在恢复大数据集时的速度比 AOF 的恢复速度要快。

    相关文章

      网友评论

          本文标题:三 redis的持久化分析

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