1 前言

redis是一款基于内存的NoSQL数据库,数据都存储在内存中,一旦机器出现宕机,或者突发意外断电等,导致机器无法正常工作的情况下,那么redis中的数据就丢失了,面对这种问题,redis提供了持久化机制将数据保存到本地磁盘中,以便在服务器宕机之后,可以对数据进行恢复。

2 Redis持久化

i. Redis持久化,就是将内存中的数据,永久保存到磁盘上。
ii. Redis持久化有两种方式:RDB(Redis DB)、AOF(AppendOnlyFile)。

2.1 RDB(快照模式)

在默认情况下,Redis 将数据库快照保存在名字为dump.rdb的二进制文件中,可以在redis.conf配置文件中修改持久化信息。

save 900 1 表示在900秒内,至少更新了1条数据。Redis就将数据持久化到硬盘
save 300 10 表示在300秒内,至少更新了10条数据,Redis就会触发将数据持久化到硬盘
save 60 10000 表示60秒内,至少更新了10000条数据,Redis就会触发将数据持久化到硬盘

2.1.1 策略

(1)自动:BGSAVE

--特点:

【1】按照配置文件中的条件满足就执行BGSAVE。
【2】非阻塞,Redis服务正常接收处理客户端请求。
【3】Redis会folk()一个新的子进程来创建RDB文件,子进程处理完后会向父进程发送一个信号,通知它处理完毕,父进程用新的dump.rdb替代旧文件。

(2)手动:SAVE

--特点:

【1】客户端(redis-cli)发起SAVE命令。
【2】阻塞Redis服务,无法响应客户端请求。
【3】创建新的dump.rdb替代旧文件。

2.1.2 优点

i. 执行效率高。
ii. 恢复大数据集速度较AOF快。

2.1.3 缺点

i. 会丢失最近写入、修改的而未能持久化的数据。
ii. folk过程非常耗时,会造成毫秒级不能响应客户端请求。

2.2 AOF(追加模式、命令重演)

2.2.1 特点

【1】Append only file,采用追加的方式保存,默认文件为appendonly.aof;
【2】记录所有的写操作命令,在服务启动的时候重演这些命令就可以还原数据库;
【3】AOF默认关闭,需要在配置文件中手动开启。

2.2.2 写入机制

说明:AOF机制,添加了一个内存缓冲区(buffer),将内容写入缓冲区。

当缓冲区被填满、或者用户手动执行fsync、或者系统根据指定的写入磁盘策略自动调用fdatasync命令,才将缓冲区里的内容真正写入磁盘里。因此在缓冲区里的内容未写入磁盘之前,可能会丢失。

2.2.3 写入磁盘的策略

appendfsync选项,这个选项的值可以是always、everysec或者no。

Always:服务器每写入一个命令,就调用一次fdatasync,将缓冲区里面的命令写入到硬盘。这种模式下,服务器出现故障,也不会丢失任何已经成功执行的命令数据。Everysec(默认):服务器每一秒调用一次fdatasync,将缓冲区里面的命令写入到硬盘。这种模式下,服务器出现故障,最多只丢失一秒钟内的执行的命令数据。No:服务器不主动调用fdatasync,由操作系统决定何时将缓冲区里面的命令写入到硬盘。这种模式下,服务器遭遇意外停机时,丢失命令的数量是不确定的。
运行速度:always的速度慢,everysec和no都很快。

2.2.4 aof重写机制

AOF文件过大,合并重复的操作,AOF会使用尽可能少的命令来记录。

2.2.4.1 重写过程

(1)fork一个子进程负责重写AOF文件。
(2)子进程会创建一个临时文件写入AOF信息。
(3)父进程会开辟一个内存缓冲区接收新的写命令。
(4)子进程重写完成后,父进程会获得一个信号,将父进程接收到的新的写操作由子进程写入到临时文件中。
(5)新文件替代旧文件。

重写的本质:就是将操作同一个键的命令合并。从而减小AOF文件的体积。

2.2.4.2 aof重写触发机制

(1)手动:客户端向服务器发送BGREWRITEAOF命令。
(2)自动:配置文件中的选项,自动执行BGREWRITEAOF命令。

auto-aof-rewrite-min-size <size>

触发AOF重写所需的最小体积:只要在AOF文件的体积大于等于size时,才会考虑是否需要进行AOF重写,这个选项用于避免对体积过小的AOF文件进行重写。

auto-aof-rewrite-percentage <percent>

指定触发重写所需的AOF文件体积百分比:当AOF文件的体积大于auto-aof-rewrite-min-size指定的体积,并且超过上一次重写之后的AOF文件体积的percent %时,就会触发AOF重写。(如果服务器刚刚启动不久,还没有进行过AOF重写,那么使用服务器启动时载入的AOF文件的体积来作为基准值)。
将这个值设置为0表示关闭自动AOF重写。

2.2.5 优点

(1)写入机制,默认fysnc(手工同步)每秒执行,性能很好不阻塞服务,最多丢失一秒的数据;
(2)重写机制,优化AOF文件;
(3)如果误操作了(FLUSHALL等),只要AOF未被重写,停止服务移除AOF文件尾部FLUSHALL命令,重启Redis,可以将数据集恢复到FLUSHALL 执行之前的状态。

2.2.6 缺点

(1)相同数据集,AOF文件体积较RDB大了很多。
(2)恢复数据库速度较RDB慢(文本,命令重演)。

redis数据持久化到mysql_Redis【数据持久化篇】相关推荐

  1. redis数据持久化到mysql_redis 数据持久化的几种方式

    1.前言 Redis的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上(这称为"半持久化模式"):也可以把每一次数据变化都写入到一个append only file( ...

  2. Redis学习总结(数据类型、持久化、事务、数据删除策略、主从复制、哨兵、缓存雪崩等)

    Redis学习总结 1.Redis是什么 1.概念 2.特点 3.应用场景 2.Linux环境安装redis 3.Redis的数据存储格式 1.String类型 1.String类型的常用操作 2.S ...

  3. 重启redis命令_redis系列之——数据持久化(RDB和AOF)

    在数据库(如mysql)和缓存(如redis)的发展中,都会相互借鉴对方的长处来弥补自身的不足.比如mysql作为持久化数据库,为了提高数据的访问速度,会使用缓存技术,当一条sql查询完成后,mysq ...

  4. redis学习(九)——数据持久化

    一.概述 Redis的强大性能很大程度上都是因为所有数据都是存储在内存中的,然而当Redis重启后,所有存储在内存中的数据将会丢失,在很多情况下是无法容忍这样的事情的.所以,我们需要将内存中的数据持久 ...

  5. Jsoup:使用Java将爬虫得到的数据写入Excel,Jsoup得到的数据进行持久化,爬虫数据保存到本地Excel中

    Jsoup:使用Java将爬虫得到的数据写入Excel,Jsoup得到的数据进行持久化,爬虫数据保存到本地Excel中 一.资源 EasyExcel使用教程 Jsoup爬虫教程 二.代码 xml依赖 ...

  6. Apache ZooKeeper - ZK的内存数据 + 持久化事务日志 + 数据快照 初探

    文章目录 内存数据 源码实现 事务日志 配置项 查看事务日志数据 LogFormatter 写入日志的优化 (预分配) 数据快照 查看数据快照数据 SnapshotFormatter 事务日志 VS ...

  7. R语言数据导出(数据保存、导出、持久化到本地指定目录文件)、使用foreign包的write.dta函数将dataframe导出为Stata格式dta文件

    R语言数据导出(数据保存.导出.持久化到本地指定目录文件).使用foreign包的write.dta函数将dataframe导出为Stata格式dta文件 目录

  8. 手撸一个Flutter插件实现跨苹果全家桶云同步持久化Key Value数据

    前言 作为一个客户端开发者,后端开发一直是我的弱项.虽然GPT的横空出世,让我对后端的开发有一点眉目.但是现实是,能不触碰就不触碰,因为人的精力是有限,如何在有限的时间里发挥最大的作用一直是我的一个追 ...

  9. R语言数据导出(数据保存、导出、持久化到本地指定目录文件)、保存为txt、csv、tsv、xls、xlsx、dta、sas、sps格式文件

    R语言数据导出(数据保存.导出.持久化到本地指定目录文件).保存为txt.csv.tsv.xls.xlsx.dta.sas.sps格式文件 目录

最新文章

  1. 基于相关系数的影像匹配_智库丨陈晓勇:低空摄影测量立体影像匹配的现状与展望...
  2. jzoj100029. 【NOIP2017提高A组模拟7.8】陪审团(贪心,排序)
  3. python实现链表的删除_Python垃圾回收机制
  4. CSS布局奇淫巧计之-强大的负边距
  5. 找出最大长度子字符串(只包含字母),打印并且返回长度.
  6. mysql5.715 安装在d盘_mysql5.7.15在windows环境下的安装设置图文详细教程
  7. 机器视觉使用光源的几个选择标准
  8. 常用的密码破解方法大汇总
  9. 将多个txt文件合并成一个
  10. python_(1)_向量运算
  11. 1块钱整个域名,这波不错
  12. 五、交换机 与 发布/订阅模式、路由模式、主题模式
  13. 文件查找工具Everything的上下文菜单配置
  14. pic 18f45k80单片机看门狗程序
  15. 用nodejs配合python破解X-Ca-Signature,抓取博客积分数据
  16. 移动软件开发:安卓APP首页构建
  17. Cesium中加载地形影像切片,以及3dtiles和shp及kml方法
  18. 我的第四个C语言:计算圆柱体的表面积和体积。
  19. 按丶自动打开计算机,联想电脑台式机启动自动进入Lenovo diagnostics界面
  20. 北大心理与认知学院院长方方:人类注意力图和动态机制

热门文章

  1. python创建一个类初始化两个变量name、age_Python小白入门:第八讲||类
  2. linux mail 密码错误,linux下mail使用故障解决
  3. excel如何匹配同名数据_Excel如何查找名字重复的数据
  4. linux运行 netcore,linux 下netcore程序开机自动启动服务
  5. java获取目录中最后被更改的文件_如何使用Java从目录中只获取10个最后修改过的文件?...
  6. iphone屏幕镜像如何全屏_苹果系统截屏录屏+标记剪辑功能详解( iPhone/iPad/Mac)
  7. Python教程:多维列表(元组)碾成一维形式
  8. PHP 与Python 读取大文件的区别
  9. 隧道野蛮模式_点亮“隧道之光”将人心中照亮
  10. Windows MSVC 符号表(.lib文件)(C++符号表解析)(符号表是如何产生的)(第四步:链接)