原创:享学课堂讲师
转载请声明出处!

RDB

RDB 是 Redis 默认的持久化方案。在指定的时间间隔内,执行指定次数的写操作,则会将内存中的数据写入到磁盘中。即在指定目录下生成一个dump.rdb文件。Redis重启会通过加载dump.rdb文件恢复数据。

找到配置文件,在配置redis.conf文件里面找下如下的配置

save 60 1000

这个配置指的是,每隔60s,如果有超过1000个key发生了变更,那么就生成一个新的dump.rdb文件,就是当前redis内存中完整的数据快照,这个操作也被称之为snapshotting快照。

当然你也可以手动调用save或者bgsave命令,同步或异步执行rdb快照生成,同时save可以设置多个,就是多个snapshotting检查点,每到一个检查点,就会去check一下,是否有指定的key数量发生了变更,如果有,就生成一个新的dump.rdb文件。

上面画了个简单的图,描绘的是RDB持久化机制的工作流程,具体来看可以有如下几个步骤:

(1)redis根据配置自己尝试去生成rdb快照文件

(2)fork一个子进程出来

(3)子进程尝试将数据dump到临时的rdb快照文件中

(4)完成rdb快照文件的生成之后就替换之前的旧的快照文件dump.rdb,每次生成一个新的快照,都会覆盖之前的老快照

AOF

AOF :Redis 默认不开启。它的出现是为了弥补RDB的不足(数据的不一致性),所以它采用日志的形式来记录每个写操作,并追加到文件中。Redis重启的会根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。

找到配置文件后,你需要修改的第一个配置为:

appendonly yes

以打开AOF持久化机制,在生产环境里面,一般来说AOF都是要打开的,除非你说随便丢个几分钟的数据也无所谓。

打开AOF持久化机制之后,redis每次接收到一条写命令,就会写入日志文件中,当然是先写入oscache的,然后每隔一定时间再fsync一下磁盘文件。

除开appendonly的这个配置项,关于AOF还有一个非常有意思的配置:

appendfsync everysec

这个appendfsync 默认值是everysec,除开这个以外,总共有3个取值的可能:

always: 每次写入一条数据,立即将这个数据对应的写日志fsync到磁盘上去,性能非常非常差,吞吐量很低; 确保说redis里的数据一条都不丢,那就只能这样了。

everysec:每秒将oscache中的数据fsync到磁盘,这个最常用的,生产环境一般都这么配置,性能很高,QPS还是可以上万的。

no:仅仅redis负责将数据写入oscache就撒手不管了,然后后面os自己会时不时有自己的策略将数据刷入磁盘,不可控了。

可见默认值就是最好的选项了

(1)redisfork一个子进程。

(2)子进程基于当前内存中的数据,构建日志,开始往一个新的临时的AOF文件中写入日志。

(3)redis主进程,接收到client新的写操作之后,在内存中写入日志,同时新的日志也继续写入旧的AOF文件。

(4)子进程写完新的日志文件之后,redis主进程将内存中的新日志再次追加到新的AOF文件中。

(5)用新的日志文件替换掉旧的日志文件。

  • Redis 默认开启RDB持久化方式,在指定的时间间隔内,执行指定次数的写操作,则将内存中的数据写入到磁盘中。
  • RDB 持久化适合大规模的数据恢复但它的数据一致性和完整性较差。
  • Redis 需要手动开启AOF持久化方式,默认是每秒将写操作日志追加到AOF文件中。
  • AOF 的数据完整性比RDB高,但记录内容多了,会影响数据恢复的效率。
  • Redis 针对AOF文件大的问题,提供重写的瘦身机制。
  • 若只打算用Redis做缓存,可以关闭持久化。
  • 若打算使用Redis的持久化。建议RDB和AOF都开启。其实RDB更适合做数据的备份,留一后手。AOF出问题了,还有RDB。

如果喜欢本文,可以关注我们的官方账号,第一时间获取资讯。
你的关注是对我们更新最大的动力哦~

私信回复“java”可以领取java课件和资料。

redis日志_「漫画」谈谈Redis持久化相关推荐

  1. java类初始化顺序_「漫画」Java中的父子类的执行顺序到底是怎么一回事?

    ----下课后---- 结论 类的加载顺序. (1) 父类静态代码块(包括静态初始化块,静态属性,但不包括静态方法) (2) 子类静态代码块(包括静态初始化块,静态属性,但不包括静态方法 ) (3) ...

  2. 内存淘汰算法_「承」Redis 原理篇——Redis 的内存回收机制

    前言 关于 Redis 的"起承转合",我前面已经用五个篇章的长度作了一个 Redis 基础篇--"起"篇的详细阐述,相信大家无论之前有没有接触过 Redis, ...

  3. redis 端口_「建议收藏」手把手教你搭建redis集群

    前言 在生产中单机的redis服务不能保证程序的高可用,所以有时需要我们来搭建一个redis集群,保证某一台redis服务挂了的时候,我们的服务还可以保证正常运行. 单机redis的搭建,可以参考我的 ...

  4. 记一次「失败」的 Redis 面试

    前两天,一哥们去面 Go 后端开发,起初 SQL 优化技巧.分布式架构.中间件都答得都挺好,没想到最后折在了 Redis 上,回来跟我复盘了一波: 面试官:"Redis 什么时候做 Reha ...

  5. redis日志_为什么我的Redis这么“慢”?

    Redis 作为内存数据库,拥有非常高的性能,单个实例的 QPS 能够达到 10W 左右. 图片来自 Pexels 但我们在使用 Redis 时,经常时不时会出现访问延迟很大的情况,如果你不知道 Re ...

  6. 请求失败或服务未及时响应 有关详细信息_「干货」从零开始的微服务搭建之路...

    随着公司的业务发展,有幸经历了从单体应用迁移到分布式应用,又从分布式应用开始准备搭建微服务应用,以下是公司从零开始搭建微服务的过程,记录并分享出来,希望对大家有所帮助,我们先使用Spring Clou ...

  7. docker 容器运行 golang程序_「Docker」 - 运行 amp; 管理容器

    容器是基于容器技术所建立和运行的轻量级应用运行环境,它是Docker封装和管理应用程序或微服务的「集装箱」,在Docker中,容器是最核心的部分. 一.容器的创建和启动 Docker容器的生命周期里分 ...

  8. mac redis 链接_在Ubunt/Mac系统安装Redis以及设置Redis密码并且允许远程连接 - Laravel学习网...

    REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统. Redis是一个开源的使用ANSI C语言编写.遵守B ...

  9. tomcat 不支持put 高版本_「MG6_DCT280」湿式七档双离合版本-性价比并不高

    上汽名爵_MG6定义为「掀背式运动轿车」,设计感很有些英伦风格,性能也确实可圈可点.然而这台车只有MT版本值得选择,即使在新款升级"DCT280"湿式七档双离合变速箱后也不例外.因 ...

最新文章

  1. SAP MM VL09试图取消收货报错说某个HU负库存
  2. android 4大组件相互启动,Android四大组件之Activity
  3. python面试-Python面试技巧合集(建议收藏)
  4. Git之多个用户ID适配
  5. 毕业与计算机专业,电子与计算机工程专业毕业后干什么
  6. go设计模式之单例模式
  7. 【Flink】Flink Remote Shuffle 开源:面向流批一体与云原生的 Shuffle 服务
  8. java native 开发环境搭建_Java3D 集成开发环境部署与配置(含实例)
  9. JavaScript笔记2———js的数据类型
  10. python的特性跨平台_VS 2015 的跨平台特性对 Qt 会带来多大的冲击呢?
  11. 在线教学战“疫”打响,VIPKID背后是阿里云
  12. 税务计算机类考试题型,速看!2020年税务师考试方式、题型及计算器要求
  13. 使用Python2.7和火狐浏览器下载QQ空间好友相册
  14. Powershell 创建NetWork Location(盘符快捷方式)
  15. C语言malloc函数详解
  16. 你只管打开这个视频,剩下的交给「卧槽」
  17. 浅析 Hinton 最近提出的 Capsule 计划
  18. Arduino ESP32 TFTLCD ST7735 代码和原理
  19. Java动态数组的用法详解
  20. Thunderbolt4,雷电4与USB4

热门文章

  1. 解决MVC Json序列化的循环引用问题/EF Json序列化循引用问题---Newtonsoft.Json
  2. DOS配合FastCopy实现远程增量备份
  3. IOS开发:关于performSelectorXXX的延迟的使用
  4. django in的一点心得
  5. matlab 显示3d频谱_matlab 关于频谱分析程序集锦
  6. oracle sql判断值为空,Oracle,sqlserver的空值(null)判断
  7. 安装LPC55S69 MicroPython模块是遇到的CDC Interface驱动问题
  8. 智能车竞赛技术报告 | 双车接力组 - 东北大学 - 三好学生
  9. 2021年春季学期-信号与系统-第七次作业参考答案-第六小题
  10. 如何在MARKDOWN编辑器设置表格的宽度?