AOF和RDB是什么

Redis进行操作时,有两种方式将操作的结果保存下来。一种是将结果以快照的方式保存在二进制文件中(默认叫:dump.rdb* ),这就是RDB模式,另一种是将操作的命令追加到一个记录文件里(默认叫:appendonly.aof),然后通过重新执行这些命令来重建数据库。通常,不用修改这些,按默认的来就好了,但是,了解一下还是有好处的,说不定面试就问这个呢?

RDB模式

在redis里,默认使用RDB模式。因为RDB模式重建数据库比较快。

这里的 重建数据库 是指将数据从硬盘移到内存,并建立起数据库的过程。对于RDB模式来说,就是把 dump.rdb 文件加载到内存,并解压字符串,就建立起了数据库。而对于AOF模式来说,则是在启动Redis服务器的时候,运行appendonly.aof日志文件,在内存中重新建立数据库。从这里的描述就可以看出,AOF的重建过程是要比RDB慢的。

使用RDB模式的话,系统会将内存中数据库的快照每隔一段时间间隔更新到硬盘中(dump.rdb 文件里),这个更新的频率是可以指定的。在redis.conf中有三个配置用来指定内存数据更新到硬盘的频率:

//格式是:save <seconds> <changes>
save 900 1           //如果仅有1-9次更改操作,那么要900s才写入硬盘一次
save 300 10          //如果仅有10-9999次更改操作,那么要300s才写入硬盘一次
save 60 10000        //如果超过10000次更改操作,那么60s才会写入硬盘一次

900s,也就是15分钟,300s,就是5分钟。这个时间挺长的,这正是RDB模式的缺点所在——如果服务器宕机的话,可能会造成最后几分钟,保存在内存中还来不及刷入硬盘的数据丢失。如果数据很重要那就惨了。

但是,如果数据不是那么重要,丢失几分钟数据也没什么关系,那么RDB模式是最好的选择。

AOF模式

使用AOF模式是将操作日志记在appendonly.aof 文件里,每次启动服务器就会运行appendonly.aof 里的命令重新建立数据库。因为要重新运行命令,所以appendonly.aof 是比较慢的。所以,默认AOF模式是关闭的。你可以在redis.conf 文件里配置,使用appendonly yes 打开AOF模式。

AOF模式有三种追加到appendonly.aof 的方式,用来指定什么时机可以将操作日志追加到appendonly.aof 文件里。它们分别是:

方式 说明
always 每次执行写操作时都将操作记录追加到日志,安全,但比较慢
everysec 每秒钟将操作记录追加到日志,系统默认的方式,是一种权衡折衷,通常这种方式会比较好
no 让操作系统去决定什么时候追加,也许当操作系统有空的时候,速度快

相较于RDB,AOF模式是比较安全的,即使服务器宕机,丢失的数据也最多是一秒两秒的。所以,如果数据对安全性要求很高,那么用AOF吧。

另外,你可以同时指定这两种方式,运行的时候,它们各自按自己的方式办事,不冲突。但是启动的时候,是按AOF模式启动的,也就是运行appendonly.aof 文件。

这些东西,都是从redis.conf搬出来的,推荐去看一下,文件也不长,一共才490行,可以体会一下原汁原味的知识。

AOF模式和RDB模式对比

RDB使用快照的方式进行持久化,这种方式生成的文件结构比较紧密,比较节省空间,而且恢复恢复的时候比AOF文件快。但是因为要做快照,这种方式对redis服务影响较大,所以生成RDB的频率不会太快,一般几分钟才做一次,所以服务器宕机的话,可能会丢失几分钟的信息。

AOF使用日志的方式进行持久化,这种方式生成的文件较大,恢复的时候也较慢,但是对redis服务影响较小,所以刷新AOF文件的频率可以较快,一般都是秒级别的,若服务器宕机,丢失的数据也少。

Redis windows学习(二)——Redis持久化的AOF模式和RDB模式相关推荐

  1. Redis基础学习(四)—Redis的持久化

    一.概述 Redis的强大性能很大程度上都是因为数据时存在内存中的,然而当Redis重启时,所有存储在内存中的数据将会丢失,所以我们要将内存中的数据持久化. Redis支持两种数据持久化的方式: RD ...

  2. Redis windows学习(一)——redis安装和基础使用

    前言 最近做项目时,打算用Redis做缓存服务器,于是研究了一下Redis.由于项目是在windows下,也不打算开个虚拟机,所以就直接安装在windows下.虽然,Redis官网并不提供window ...

  3. 笔记-redis深入学习-1

    笔记-redis深入学习-1 redis的基本使用已经会了,但存储和读取只是数据库系统最基础的功能: 数据库系统还得为可靠实现这两者提供一系列保证: 数据.操作备份和恢复,主要是持久化: 高可用:主要 ...

  4. Windows系统安装部署redis服务器

    目录 0. 前言 1. 下载并安装 2. 第一次试运行 3. 如何确认redis-server可用了? 3.1 运行redis-cli 3.2 用python脚本 4. Windows自启动服务 5. ...

  5. 【大厂面试】面试官看了赞不绝口的Redis笔记(二)

    文章目录 说明 四.Redis的其他功能 (一)慢查询 (二)pipeline (三)发布订阅 (四)Bitmap (五)HyperLogLog (六)GEO 五.Redis持久化的取舍和选择 (一) ...

  6. Windows 中的 redis安装、设置密码,做成服务

    Redis安装与配置 下载 解压 windows服务 配置redis环境 设置redis密码(临时和永久两种方式) 配置redis能被远程连接 一.下载 在GitHub上下载redis压缩包(版本号为 ...

  7. Windows系统安装使用Redis教程

    Windows系统安装使用Redis教程 一.前言 二.Redis下载 三.直接启动使用 四.设置密码并启动 一.前言   之前一直使用的是Linux系统中配置Redis环境,现在需要在Windows ...

  8. Windows 下安装 Redis

    下载地址:https://github.com/tporadowski/redis/releases Redis 支持 32 位和 64 位.这个需要根据实际情况选择,这里我们下载 Redis-x64 ...

  9. Redis3.2.100安装(Windows环境下Redis安装)

    针对不同的用户,Redis有Windows和Linux两种环境安装, 官网上下的是Statble版是Linux,大家一定要注意.由于本人做本地端,所以以下谈的是Windows安装. 本文Redis下载 ...

最新文章

  1. python 获取10位和13位 时间戳
  2. java识别文件类型_在Java中识别文件类型
  3. 记一次LAMP环境搭建
  4. JAVA——Scanner类绑定System.in后调用close()方法所引发的错误及其解决方案
  5. HTML基础(part7)--常用标签之超链接标签
  6. 前端学习(2706):重读vue电商网站26之JSON格式的配置文件
  7. U盘插入电脑后,提示需要格式化U盘如何解决?
  8. 整洁数据 —tidytext(一)
  9. 从软件测试转行做前端,转行软件测试或者前端开发有前途么?
  10. 计算机信息网络国际联网安全保护管理办法
  11. 截图智能识字demo
  12. json转Java_在线JSON转Java实体类—在线工具
  13. MSXML应用总结 开发篇(上)
  14. 【观察】嵌入式AI崛起,这里有一本通关“秘籍”
  15. 1到100号的灯开关问题
  16. Lerna 多 package 源代码管理方案
  17. openwrt时间自动同步
  18. 浅谈带宽,网速和流量之间的关系
  19. SQL基本语句——查询
  20. 全面屏的 iPhone X,雷军妥协的库克做到了

热门文章

  1. 2019年7月前CSDN最新排名
  2. 分布式队列编程:模型、实战
  3. spring security 认证与权限控制
  4. 实验9 根据材料编程
  5. 高一计算机专业班主任工作总结,2016学年上学期高一班主任工作总结
  6. springboot创建子模块时遇到子模块覆盖父模块问题解决
  7. linux 执行sh 文件是遇到找不到cd '目录'
  8. Plugin org.apache.maven.plugins:maven-resources-plugin:2.6
  9. 1. 在虚拟机中 添加内容
  10. 如何使用易我数据恢复向导恢复数码相机删除的图片