文章目录

  • RDB相关
    • 1.如何配置RDB持久化
    • 2.RDB持久化机制的工作流程
    • 3.基于RDB的数据恢复
  • AOF相关
    • 1.如何配置AOF持久化
    • 2.AOF持久化机制的工作流程
    • 3.破损文件修复
  • AOF和RDB同时工作

RDB相关

1.如何配置RDB持久化

在redis.conf文件中:

# 设置检查点
save 900 1
save 300 10
save 60 10000# 配置 dir 指定 rdb 快照文件的位置
dir /var/redis/6379# 配置 dbfilename 指定 rdb 快照文件的名称
dbfilename dump.rdb

每隔60s,如果有超过1000个key发生了变更,那么就生成一个新的dump.rdb文件,就是当前redis内存中完整的数据快照,这个操作也被称之为snapshotting,快照。
可以手动调用save或者bgsave命令,同步或异步执行rdb快照生成

save可以设置多个,就是多个snapshotting检查点,每到一个检查点,就会去check一下,是否有指定的key数量发生了变更,如果有,就生成一个新的dump.rdb文件

2.RDB持久化机制的工作流程

(1)redis根据配置自己尝试去生成rdb快照文件
(2)fork一个子进程出来
(3)子进程尝试将数据dump到临时的rdb快照文件中
(4)完成rdb快照文件的生成之后,就替换之前的旧的快照文件

dump.rdb,每次生成一个新的快照,都会覆盖之前的老快照

3.基于RDB的数据恢复

在Redis中保存几条数据后立刻执行 redis-cli SHUTDOWN 停掉Redis进程、重启,刚才插入的数据还在!因为redis-cli SHUTDOWN是一种安全退出模式,退出时会生成完成的RDB快照。
如果用kill -9的方式杀死Redis进程,数据就丢了。因为数据没有进dump.rdb文件,所以就丢了。

AOF相关

1.如何配置AOF持久化

在redis.conf文件中:

# 默认关闭AOF,设置为yes可打开,命令会先进入os cache,后fsync进入磁盘
appendonly no# 配置fsync策略:always每条执行一次fsync、everysec每秒执行一次fsync、no从不执行
# appendfsync always
appendfsync everysec
# appendfsync no# 配置aof文件名
appendfilename "appendonly.aof"# 配置重写合并策略
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

2.AOF持久化机制的工作流程

(1)redis fork一个子进程
(2)子进程基于当前内存中的数据,构建日志,开始往一个新的临时的AOF文件中写入日志
(3)redis主进程,接收到client新的写操作之后,在内存中写入日志,同时新的日志也继续写入旧的AOF文件
(4)子进程写完新的日志文件之后,redis主进程将内存中的新日志再次追加到新的AOF文件中
(5)用新的日志文件替换掉旧的日志文件

关于重写合并策略:比如上一次rewrite后是128M,不过再写的增长比例超过上次的100%,且大于min-size,才会去触发rewrite

3.破损文件修复

如果redis在append数据到AOF文件时,机器宕机了,可能会导致AOF文件破损

用redis-check-aof --fix命令来修复破损的AOF文件

AOF和RDB同时工作

(1)如果RDB在执行snapshotting操作,那么redis不会执行AOF rewrite; 如果redis再执行AOF rewrite,那么就不会执行RDB snapshotting
(2)如果RDB在执行snapshotting,此时用户执行BGREWRITEAOF命令,那么等RDB快照生成之后,才会去执行AOF rewrite
(3)同时有RDB snapshot文件和AOF日志文件,那么redis重启的时候,会优先使用AOF进行数据恢复,因为其中的日志更完整

RDB和AOF的持久化配置相关推荐

  1. Redis入门到精通(六),Redis的RDB及AOF原理及配置详解

    一.Redis的持久化 本章节会比较多的讲到所有关于Redis持久化的配置,平时使用场景会非常的少,对初学者可能不是很友好,如果仅仅是如何使用的话可以直接跳到RDB和AOF使用,小标题我标了红色,直接 ...

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

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

  3. redis 持久化详解 RDB和AOF 优缺点

    本文将先说明上述几种技术分别解决了Redis高可用的什么问题:然后详细介绍Redis的持久化技术,主要是RDB和AOF两种持久化方案:在介绍RDB和AOF方案时,不仅介绍其作用及操作方法,同时介绍持久 ...

  4. Redis持久化机制(RDB VS AOF)

    Redis持久化机制 Redis持久化机制由来 一.RDB机制 1.1 工作原理 1.2 RDB的配置 1.3 修改RDB配置的快照策略 1.3.1 自定义RDB持久化策略 1.3.2 服务宕机RDB ...

  5. Redis RDB与AOF持久化详解

    为什么要有RDB和AOF? Redis数据库基于内存储存数据,而内存的缺点就是当服务器挂掉了,数据就没了. 所以Redis需要持久化来恢复数据,而持久化的方式就有RDB和AOF Redis 持久化 R ...

  6. Redis理论知识——redis持久化(RDB、AOF)

    redis 一.高可用 1.1 概述 1.2 作用 二.Redis持久化 2.1 持久化的功能 2.2 Redis提供两种方式进行持久化 RDB 持久化 触发条件 执行流程 启动时加载 AOF持久化 ...

  7. Linux 安装Redis-6.2.5,配置及使用(RDB与AOF持久化、sentinel机制、主从复制、Spring Boot 集成 Redis)

    CentOS 7 安装Redis-6.2.5版本 Redis采用的是基于内存的单进程 单线程模型 的KV数据库,由C语言编写.官方提供的数据是可以达到100000+的qps 应用场景: 令牌(Toke ...

  8. Redis持久化 - RDB和AOF

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

  9. RDB 和 AOF 持久化的原理是什么?我应该用哪一个?它们的优缺点?

    Redis 持久化方案 Redis 提供了 RDB 和 AOF 两种持久化方案: RDB:生成指定时间间隔内的 Redis 内存中数据快照,是一个二进制文件 dumpr.rdb AOF:记录 Redi ...

最新文章

  1. 用Python进行机器学习(附代码、学习资源)
  2. leetcode 371. Sum of Two Integers
  3. Tableau十三种图表应用场景及其组合图拓展
  4. tcl把文本产生html,TCL脚本数据文件格式(译文)
  5. 通过游戏的方式与陌生人聊天,破冰是如何做到的?
  6. 【jquery版.net控件—dropdownlist】附源码,欢迎大家指点、指正、拍砖!!!
  7. 全面理解Java中的String数据类型
  8. .NET之生成数据库全流程
  9. C# windows定时服务+服务邮箱发送
  10. [转载] 字符串太长 pep8_Python f字符串– PEP 498 –文字字符串插值
  11. SAP License:SAP PI(流程集成)
  12. C# 基础补遗(未完待续)
  13. PRML学习总结(1)——Introduction
  14. KITTI Benchmark原理_距离误差百分数
  15. 苹果手机Apple ID 忘记密码 ,频繁跳出登录iCloud如何关闭
  16. 专业技能与职业素养报告计算机,学生专业技能与职业素养专题报告怎么写
  17. html返回的状态值,iradon函数返回的是什么值
  18. PaddleOCR实现高精度车牌识别
  19. 世界上最好的加密软件
  20. matlab simulink 单相可调交流电源设计

热门文章

  1. pythonselenium实战 excel读取和写入_Python3.6+selenium2.53.6自动化测试_读取excel文件的方法...
  2. 三星手机如何分屏_刷机基础知识三星如何手机进入ODIN模式
  3. python数据库-mysql
  4. 程序员javascript写乒乓球,和机器人练技术!没赢过!
  5. JS数组键值,数组合并,
  6. Sqli-labs less 62
  7. jsp 学习 第3步 - el 自定义方法 tld 说明
  8. django学习之路(五)站点管理admin - django - 一直很安静 - Powered by Discuz!
  9. 提高PHP编程效率的53个要点
  10. 为你的博客添加几分色彩