美文网首页
redis 持久化的两种方式及原理

redis 持久化的两种方式及原理

作者: 牵挂包含一种欣赏 | 来源:发表于2020-05-07 13:23 被阅读0次

redis是一个基于内存的缓存程序,即redis是使用内存进行缓存数据,但是可以将内存中的数据按照一定的策略保存到磁盘上,实现数据持久存储,redis支持两种不同方式的数据持久保存机制,分别是RDB和AOF。

RDB模式
基于时间的快照,值保留当前最新的一次快照,优点是执行速度比较快,缺点是可能会丢失从上次快照到当前快照未完成之间的数据。

RDB快照的执行过程
RDB快照的实现过程,redis从主进程fork出一个子进程,使用写时复制机制,子进程将内存的数据保存为一个临时文件,比如dump.rdb.tmp,当所有的数据保存完成之后在讲上一次保存的RDB文件替换掉,然后关闭子进程,这样可以保存没错做RDB快照的时候保存的数据都是完整的,因为直接替换了旧的RDB文件的过程中可能出现服务器宕机,断电等问题导致RDB文件还没有保存完整,导致数据丢失的情况,建议使用自动备份工具或者脚本将每次生成的RDB文件在进行备份,最大化保存历史数据。

RDB模式的优缺点
1)RDB快照保存了某个时间点的数据,可以通过脚本执行bgsave(非阻塞)或者save(阻塞)命令自定义时间点备份,同时保留多个备份,当出现故障时恢复到不同时间点的数据。
2)能最大化IO性能,父进程在保存RDB文件的时候唯一要做的是fork出一个子进程,而后的任务都会由子进程完成,父进程无须任何的IO操作。
3)RDB在数据较大的情况下恢复速度比AOF快,比如几个G甚至更大。

AOF模式:

AOF模式持久化数据过程
按照缓冲区的数据记录加入顺序,依次操作添加到指定的日志文件中,优点是数据安全性搞,缺点是重复的记录也会全部记录。
AOF和RDB一样使用了写时复制机制,AOF默认为没秒钟fsync依次,即将执行的命令保存到AOF文件中,即使redis服务器发生故障也只是丢失1秒钟之内的数据,也可以根据实际情况设置不同的fsync策略,或设置每次执行命令的时候执行fsync,fsync会在后台执行线程,所有主线程可以继续处理用的正常请求而不会受到写入AOF文件的IO影响。

AOF模式的优缺点
AOF的持久存储文件大小大于RDB格式文件。
根据定义的fsync策略(fsync是同步内存中的redis所有已经修改的文件到存储设备)默认是appendfsync everysec即每秒执行一次fsync。

相关文章

  • Redis持久化是如何做的?RDB和AOF对比分析

    redis持久化2种方式 Redis持久化有 RDB 和 AOF两种方式 一、redis持久化----两种方式1...

  • Redis学习笔记

    聊聊redis持久化 – 两种方式 redis提供了两种持久化的方式,分别是RDB(Redis DataBase)...

  • 聊一聊redis持久化

    聊聊redis持久化 – 两种方式 redis提供了两种持久化的方式,分别是RDB(Redis DataBase)...

  • 2020-02-21 记录redis(8)

    redis持久化,两种持久化方式: RDB方式 AOF方式 持久化的使用方式: RDB 优势: 1、redis的数...

  • Redis(三) Redis持久化

    下面简单介绍两种持久化的方式: Redis的持久化方式:

  • Redis持久化(三)

    Redis持久化方式 Redis有两种持久化的方式:快照(RDB文件)和追加式文件(AOF文件): RDB持久化方...

  • Redis持久化

    Redis的持久化 Redis的持久化方式有两种:快照(RDB)文件和追加文件(AOF文件) 两种方式。 RDB ...

  • Redis之持久化

    参考 深入学习Redis(2):持久化 转载自icyfire-Redis持久化 Redis有两种持久化的方式:快照...

  • redis mongodb持久化的方式

    redis持久化方式(两种) RDB持久化 redis提供了RDB持久化的功能,这个功能可以将redis在内存中的...

  • Redis持久化

    Redis持久化方式有两种:RDB和AOF。 1 RDB持久化 RDB(Redis Database)持久化是把当...

网友评论

      本文标题:redis 持久化的两种方式及原理

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