一、RDB持久化

RDB(Redis DataBase):

配置文件中对其的相关配置:

触发机制:

恢复rdb文件:

优点:

缺点:

二、AOF持久化

AOF(Append Only File):

配置文件中对其的相关配置:

恢复aof文件:

优点:

缺点:


Redis中的数据存在内存中肯定是不安全的,所以需要将数据进行持久化操作,防止数据丢失造成的危害。

一、RDB持久化

RDB(Redis DataBase):

指定时间间隔内将内存中的数据快照集体写入磁盘,也就是Snapshot快照,恢复时将快照文件直接读到内存中。

Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入一个临时文件中,待持久化过程都结束,再用这个临时文件替换上次持久化好的文件。整个过程中,主进程不进行任何IO操作。这就确保了极高的性能。如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式比AOF方式更加高效。RDB的缺点是最后一次持久化后的数据可能丢失。

默认情况下是 RDB,一般不需要修改这个配置!

在主从复制中,rdb就是备用,从机上!

配置文件中对其的相关配置:

1、RDB保存的文件 dump.rdb (在生成环境中经常将rdb文件备份)

2、RDB默认的保存规则:900s中发生一次修改就进行保存

触发机制:

  1. save的规则满足情况下,自动触发rdb规则

  2. 执行flushall命令,也会触发rdb规则

  3. 退出redis(shut down 合理退出命令),也会产生rdb文件

备份就自动生成一个 dump.rdb 文件

恢复rdb文件:

  1. 只需将rdb文件放在redis启动目录就可以,redis启动的时候会自动检查dump.rdb 恢复其中的数据!

  2. 查看需要存放的位置:config get dir

优点:

  1. 适合大规模的数据恢复!(父进程不参与数据的保存恢复,而是fork子进程管理,效率高)

  2. 对数据完整性要求不高!(比如300s内更新了9次突然宕机了,那最后的数据没来得及保存就丢失了)

缺点:

  1. 需要一定的时间间隔进行操作!如果redis意外当即,最后一次修改数据就没

  2. fork进程的时候,会占用一定的资源!

二、AOF持久化

AOF(Append Only File):

以日志的形式将我们的所有命令都记录下来(写记录读不记录),秩序罪加文件不可更改文件,redis重启会去读该文件重新构建数据,换言之,把这个文件中指令全部再执行一遍。

配置文件中对其的相关配置:

1、保存在 appendonly.aof(默认不开启,开启需要手动配置)

2、持久化策略(默认每秒写一次)

3、重写规则

默认是文件的无限追加,文件会越来越大!

当文件大小超过64m,fork一个新的进程来讲我们的文件进行重写

恢复aof文件:

破坏/损坏 aof 文件后,无法启动redis(如果默认时aof模式下)

此时,可以用 redis-check-aof 来修复

优点:

  1. 每次修改都同步,文件的完整性会更好!

  2. 没秒同步一次,可能会丢失一秒的数据!

  3. 从不同步,效率最高的!

缺点:

  1. 相对于数据文件来说,aof远远大于rdb,修复的速度也比rdb慢!

  2. aof运行效率也要比rdb慢,所以redis默认配置是rdb!

性能建议:

因为RDB文件只用作后备用途,建议只在Slave上持久化RDB文件,而且只要15分钟备份一次就够 了。

如果Enable AOF ,好处是在最恶劣情况下也只会丢失不超过两秒数据,启动脚本较简单只load自己的 AOF文件就可以了,代价一是带来了持续的IO,二是AOF rewrite 的最后 将 rewrite过程中产生的新数据写到新文件造成的阻塞几乎是不可避免的。

只要硬盘许可,应该尽量减少AOF rewrite的频率,AOF重写的基础大小默认值64M太小了,可以设到5G以上,,默认超过原大小100%大小重写可以改到适当的数值。

如果不Enable AOF,仅靠 Master-Slave Repllcation 实现高可用性也可以,能省掉一大笔IO,也 减少了rewrite时带来的系统波动。代价是如果Master/Slave 同时挂了,会丢失十几分钟的数据, 启动脚本也要比较两个 Master/Slave 中的 RDB文件,载入较新的那个,微博就是这种架构。

Redis持久化(RDB 和 AOF)相关推荐

  1. 【Linux服务器开发系列】一场redis线上事故引发的思考丨redis持久化 rdb和aof丨redis主从复制

    一场redis线上事故引发的思考 1. 事故背景介绍 2. redis持久化 rdb和aof 3. redis主从复制 4. 解决方案详解 [Linux服务器开发系列]一场redis线上事故引发的思考 ...

  2. Redis持久化----RDB和AOF 的区别

    关于Redis说点什么,目前都是使用Redis作为数据缓存,缓存的目标主要是那些需要经常访问的数据,或计算复杂而耗时的数据.缓存的效果就是减少了数据库读的次数,减少了复杂数据的计算次数,从而提高了服务 ...

  3. Redis持久化 - RDB和AOF

    一.持久化的作用 1. 什么是持久化 持久化(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘). 持久化Redis所有数据保持在内存中,对数据的更新将异步地保 ...

  4. Redis持久化 RDB和AOF 比较与选择

    Redis持久化方案 Redis是内存数据库,数据都是存储在内存中,为了避免进程退出导致数据的永久丢失,需要定期将Redis中的数据以某种形式(数据或命令)从内存保存到硬盘.当下次Redis重启时,利 ...

  5. redis持久化RDB和AOF

    Redis 持久化: 提供了多种不同级别的持久化方式:一种是RDB,另一种是AOF. RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot). AO ...

  6. Redis——持久化RDB和AOF

    Redis的持久化有两种方式,分别是RDB和AOF,其中默认的方式是RDB,我们可以看到,我们的redis里有一个dump.rdb,的文件,其实这就是我们的持久化数据 RDB持久化,保存的是一种状态, ...

  7. redis持久化RDB与AOF

    redis持久化 Redis是一种内存型数据库,一旦服务器进程退出,数据库的数据就会丢失,为了解决这个问题,Redis提供了两种持久化的方案,将内存中的数据保存到磁盘中,避免数据的丢失. RDB持久化 ...

  8. redis 之redis持久化rdb与aof

    redis是内存型的数据库 重启服务器丢失数据 重启redis服务丢失数据 断电丢失数据 Redis是一种内存型数据库,一旦服务器进程退出,数据库的数据就会丢失,为了解决这个问题,Redis提供了两种 ...

  9. Redis持久化 RDB和AOF

    什么叫持久化? 用一句话可以将持久化概括为:将数据(如内存中的对象)保存到可永久保存的存储设备中. 持久化的主要应用是将内存中的对象存储在数据库中,或者存储在磁盘文件中. XML 数据文件中等等. 也 ...

  10. 【腾讯阿里最全面试题】Redis持久化RDB和AOF 的区别

    跳槽必备: 嵌入式开发转互联网开发面经分享:嵌入式开发成功转战互联网行业 大厂offer的前置条件 学校学历,技术水准分析:大厂必备前置条件,项目经验 腾讯T9(原T3.1)offer,"8 ...

最新文章

  1. SAP MM 物料主数据里某字段看不到就是屏幕格式设置导致的?
  2. python冒号错误-python冒号错误语法无效
  3. Java实现自定义队列和树结构_Java数据结构之链表、栈、队列、树的实现方法示例...
  4. Blazor Server 和 WebAssembly 应用程序入门指南
  5. [ZJOI2007] 时态同步(拓扑序)
  6. python 雪花id_基于python实现雪花算法过程详解
  7. linux保存日志报错,为什么在Linux上错误mongod死了,但子系统被锁定,可用空间不足以存放日志文件?...
  8. Leaflet学习笔记-Leaflet.awesome-markers
  9. 手势三连拍是什么软件_超全的摆拍姿势,摆姿困难用户一定要学!
  10. [Android] 开发第十天
  11. 以CIM平台推动数字孪生落地 以数字孪生助力智慧城市建设
  12. ubuntu 20.10 安装万能五笔(ibus模式)
  13. ASO优化:App从0到1进行ASO优化
  14. FPGA LVDS液晶屏
  15. 10.3 配置前缀列表
  16. 气质由内而外 都市白领3个饮食排毒法则
  17. 基于layui和ThinkPHP6开发的通用后台管理框架
  18. fcitx输入法代码分析总结
  19. 如何做一个好的项目经理
  20. PHP-FFMpeg 操作视频/音频文件

热门文章

  1. C++中对多态的理解
  2. 大江大河,随笔观后感
  3. 聊一聊我自己的从业经历和感悟
  4. 给大家推荐一个优质Linux内核技术公众号-Linux阅码场
  5. 计算机音乐奔跑,跑起来!100首最适合跑步的音乐
  6. 复习Java异常处理_异常分类_自定义异常_线程初步了解
  7. long类型python_Python类型long vs C'long long'
  8. python dataframe 列_python pandas库中DataFrame对行和列的操作实例讲解
  9. 一、PHP基础——表单传值、上传文件
  10. fastapi 安全性 / APIRouter / BackgroundTasks / 元数据 / 测试调试