Redis系列--redis持久化

这篇具有很好参考价值的文章主要介绍了Redis系列--redis持久化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、为什么需要持久化

redis本身运行时数据保存在内存中,如果不进行持久化,那么在redis出现非正常原因宕机或者关闭redis的进程或者关闭计算机后数据肯定被会操作系统从内存中清掉。当然,redis本身默认采用了一种持久化方式,即RDB (Redis DataBase),可以在redis的目录中找到dump.rdb文件,这就是使用RDB方式做持久化后生成的数据文件。

二、常见的两种持久化方式

一、RDB(Redis Database)快照

1、是什么:即redis数据库,rdb持久性以指定的时间间隔执行数据集的时间点快照。

Redis系列--redis持久化 2、作用:

在指定的时间间隔内将内存中的数据集快照写入磁盘。也就是Snapshot内存快照。等redis回复时再将硬盘快照文件直接读回到内存里。保存备份时执行的是全量快照,把内存中的所有数据都保存到dump.rdb文件

3、持久化触发类型:

自动触发:

Redis系列--redis持久化

手动触发:

Redis提供了两个命令来手动生成RDB文件

save:在主进程中执行会阻塞当前redis服务器,直到持久化工作完成,在执行save命令期间,redis不能处理其他命令,线上禁止使用。

bgsave:redis会在后台异步进行快照操作,不阻塞快照同时还可以响应客户端请求,该触发方式会fork一个子进程由子进程复制持久化过程。

注意:生产上只允许用bgsave,不允许用save

lastsave:获取最后一次成功执行快照的时间,获取到的是时间戳,在Linux中可以使用date -d @时间戳进行时间的转换

4、如何恢复

将备份文件移动到redis安装目录并启动服务即可。

注意:1、执行flushall/flushdb命令也会产生dump.rdb文件,但里面是空的,没有任何意义。2、物理恢复,服务和备份分机隔离。以防止生产机物理损坏后备份文件也挂了。

5、优劣势

优点:官网

Redis系列--redis持久化

1、适合大规模数据恢复

2、按照业务定时备份

3、对数据完整性和一致性要求不高

4、RDB文件在内存中的加载速度要比AOF快得多

缺点:官网

Redis系列--redis持久化

 1、在一定间隔时间做一次备份,如果redis意外宕机了,就会丢失从当前至最近一次快照期间的数据,快照之间的数据会丢失。

2、内存数据的全量同步,如果数据量太大会导致I/O严重影响服务器性能

3、RDB依赖于主进程的fork,在更大的数据集中,这可能导致服务请求的瞬间延迟。fork的时候内存数据被克隆了一份,大致两倍的膨胀,需要慎重考虑。

Redis系列--redis持久化

6、使用redis -check -rdb 对损坏的rdb文件进行修复

7、RDB的触发

1、配置文件中默认的快照配置,即多少时间内进行了多少次redis数据的操作触发rdb持久化机制

2、手动save/bgsave命令

3、执行flashall/flashdb命令也会产生dump.rdb文件,但里面是空的,无意义。

4、执行shutdown且没有设置开启aof持久化

5、主从复制时,主节点自动触发

8、禁用rdb

1、redis-cli config set save "":动态的所有停止rdb保存规则

2、配置文件上禁用

二、AOF(Append Only File)

一、是什么

Redis系列--redis持久化

 二、能干什么

主要是记录每次redis的除读取操作外的所有操作指令,AOF保存的是appendonly.aof文件

三、AOF持久化工作流程

Redis系列--redis持久化

Redis系列--redis持久化

四、AOF缓冲区三种写回策略 

1、Always:同步写回,每个写命令执行完立刻同步地将日志写回磁盘。

2、everysec(默认写回策略):每秒写回,每个写命令执行完,只是先把日志写到aof文件的内存缓冲区,每隔1秒把缓冲区中的内容写入到磁盘文件。

3、no:操作系统控制的写回。每个命令执行完,只是先把日志写到AOF文件的内存缓冲区,由操作系统决定何时将缓冲区内容写回磁盘

Redis系列--redis持久化

五、redis7 Multi Part AOF 的设计 

redis7之前AOF文件有且只有一个 ,redis7之后有三个文件:base基本文件、incr增量文件、manifest清单文件,且有一个配置目录用于和rdb区分

Redis系列--redis持久化

Redis系列--redis持久化

六、AOF异常文件修复

七、优劣势 

优势: 

Redis系列--redis持久化

劣势:

Redis系列--redis持久化1、对于相同数据集的数据而言AOF文件要大于RDB文件,且恢复速度要慢于RDB

2、AOF运行效率慢于RDB,每秒同步策略效率较好,不同步效率和RDB相同

八、AOF重写机制 

 1、是什么Redis系列--redis持久化

 启动AOF文件的内容压缩,只保留可以恢复数据的最小指令集

2、两种触发机制 

自动触发:

Redis系列--redis持久化

手动触发: 直接发送bgrewriteaof命令 

重写原理:

Redis系列--redis持久化

自Redis 7.0.0以来,当安排AOF重写时,Redis父进程会打开一个新的增量AOF文件以继续写入。子进程执行重写逻辑并生成新的基本AOF。Redis将使用一个临时清单文件来跟踪新生成的基本文件和增量文件。当它们准备好后,Redis将执行原子替换操作,使这个临时清单文件生效。为了避免在AOF重写重复失败和重试的情况下创建许多增量文件的问题,Redis引入了AOF重写限制机制,以确保失败的AOF重写以越来越慢的速度重试。 

Redis会fork一个子进程,所以现在我们有了一个子进程和一个父进程。

子级开始在临时文件中写入新的基本AOF。

父级打开一个新的增量AOF文件以继续写入更新。如果重写失败,旧的基本文件和增量文件(如果有的话)加上这个新打开的增量文件代表了完整的更新数据集,所以我们是安全的。

当子级完成重写基本文件时,父级会得到一个信号,并使用新打开的增量文件和子级生成的基本文件来构建临时清单,并将其持久化。

利润现在Redis对清单文件进行原子交换,以便AOF重写的结果生效。Redis还会清理旧的基本文件和任何未使用的增量文件。

总结:

Redis系列--redis持久化

Redis系列--redis持久化 

 三、AOF+RDB混合使用

一、同时开启两种持久化方式

reds默认是开启RDB持久化,而不会开启AOF持久化方式,如果两者同时开启,redis优先加载AOF持久化。

Redis系列--redis持久化

 二、redis加载顺序

当redis重启的时候会优先加载AOF文件来恢复原始的数据,因为通常情况下AOF文件保存的数据集要比RDB文件保存的数据集更完整。RDB的数据不实时,同时使用两者时服务器重启也只会找AOF文件。由于RDB更适合用于备份数据库(AOF在不断变化不好备份),留着RDB作为一个兜底策略。

Redis系列--redis持久化 

Redis系列--redis持久化 

四、纯缓存模式

redis并不做持久化,只用做高速缓存,禁用持久化机制可以提高性能。

1、关闭RDB:save "";禁用RDB自动触发模式,手动触发还是可以的

2、关闭AOF:appendonly no;禁用AOF写回策略,手动触发还是可以的。

 文章来源地址https://www.toymoban.com/news/detail-449098.html

 

到了这里,关于Redis系列--redis持久化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Redis】Redis持久化机制

    Redis是基于内存存储的数据库,如果遇到服务重启或者崩溃,内存中的数据将会被清空。所以为了确保数据安全性和可靠性,我们需要将内存中的数据持久化到磁盘上。 持久化不仅可以防止由于系统故障、重启或者其他原因导致的数据丢失。还可以用于备份、数据恢复和迁移

    2023年04月20日
    浏览(65)
  • redis持久化【RDB+AOF】持久化双雄

    这是redis系列文章之《redis持久化【RDB+AOF】持久化双雄》,上一篇文章【redis基础】redis的十大数据类型_努力努力再努力mlx的博客-CSDN博客 感谢大家的支持~ 目录 RDB 什么是RDB RDB的作用 配置文件关于RDB部分  6vs7 操作步骤 修改配置文件(本案例设置5s修改2次) 修改dump文件的保

    2024年02月08日
    浏览(74)
  • Redis两种持久化方案RDB持久化和AOF持久化

    Redis持久化 Redis有两种持久化方案: RDB持久化 AOF持久化 1.1.RDB持久化 RDB全称Redis Database Backup file(Redis数据备份文件),也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障重启后,从磁盘读取快照文件,恢复数据。快照文件称为RDB文件

    2024年02月14日
    浏览(52)
  • 【Redis二】Redis优化之持久化

    在web服务器中, 高可用是指服务器可以正常访问的时间,衡量的标准是在多长时间内可以提供正常服务 (99.9%、99.99%、99.999%等)。 但是在Redis语境中,高可用的含义似乎要宽泛一些,除了保证提供正常服务(如主从分离、快速容灾技术), 还需要考虑数据容量的扩展、数据

    2024年02月11日
    浏览(40)
  • 【Redis19】Redis进阶:持久化策略

    从最早接触 Redis 开始,我们就知道它是一个内存数据库,这是它的优势,也是它的劣势。为啥这么说呢?内存速度快,但是断电或者重启即丢。然而,要做为一个生产环境所能使用的数据库系统,将数据持久化就成为了一个必要的能力。毕竟我们可不想重启 Redis 之后,每个

    2024年02月03日
    浏览(81)
  • 面试redis篇-06Redis持久化

    在Redis中提供了两种数据持久化的方式:1、RDB   2、AOF 全称Redis Database Backup file(Redis数据备份文件),也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障重启后,从磁盘读取快照文件,恢复数据 RDB的执行原理 bgsave开始时会fork主进程

    2024年02月21日
    浏览(36)
  • redis-持久化-1

    RDB(Redis DataBase) AOF(Append Of File) 在指定的时间间隔内将内存中的数据集快照写入磁盘, 也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里 Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到 一个临时文件中,待持久化过程都结束了,再

    2024年01月25日
    浏览(33)
  • Redis持久化

    Redis持久化 实现类似照片记录效果的方式,就是 把某一时刻的数据和状态以文件的形式写到磁盘上,也就是快照 。这样一来即使故障宕机,快照文件也不会丢失,数据的可靠性也就得到了保证。这个快照文件就称为RDB文件( dump.rdb ),其中,RDB就是Redis DataBase的缩写。 在指定

    2024年02月03日
    浏览(32)
  • 12.redis 持久化

    redis 是一个内存数据库,把数据存储在内存中的,内存中的数据是不持久的,要想做到持久,就需要让redis把数据存储到硬盘上。 为了保证速度块,数据肯定还是得在内存中,但是为了持久化,数据还得想办法存储在硬盘上。 RDB = Redis DataBase 定期备份 RDB 定期的把 Redis 内存中

    2024年02月09日
    浏览(34)
  • Redis的持久化!!!

    首先是如何使用Redis:cmd打开输入redis-server.exe redis.windows.conf即可启动。 持久化: Redis的高性能是由于其将所有数据都存储在了内存中,为了使Redis在重启之后仍能保证数据不丢失,需要将数据从内存中同步到硬盘中,这一过程就是持久化。          Redis支持两种方式的持

    2024年01月24日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包