首页 > 数据库 >redis的持久化机制

redis的持久化机制

时间:2024-09-11 14:47:04浏览次数:12  
标签:AOF 持久 redis Redis RDB 快照 数据 化机制

在使用Redis过程中,持久化是一项非常重要的功能,因为如果Redis Server停止工作,所有的数据将全部丢失。为了避免这种情况的出现,我们需要将Redis中的数据保存在硬盘上,以保证数据不受服务器宕机影响。Redis提供了两种持久化方式——RDB和AOF。

一、什么是RDB

Redis的RDB持久化方式是将某个时间点上Redis中的数据以快照的形式保存在硬盘上。可以将快照看作是Redis中的一张静态的图片,图片中记录了快照时刻Redis中的所有数据。

RDB实现原理

RDB是Redis的快照持久化方式。当Redis需要进行快照操作时,它会fork出一个子进程,负责将快照写入磁盘,而父进程则继续处理请求。由于Redis使用了写时复制(COW)的技术,所以子进程只需要复制到父进程中发生过改变的数据页,而不是复制整个Redis进程的内存空间。因此,这个过程不会对父进程的性能造成较大的影响。

RDB的优点

RDB持久化方式对于大规模数据的备份非常高效,因为它只需要在一定时间间隔内将Redis当前的数据生成一个快照,就可以将这个快照存档到磁盘中。而且,快照文件通常比AOF文件更小,这意味着它们的恢复速度会更快。

它还可以在处理大量数据的情况下节省CPU资源,并且可以非常准确地回滚数据到某个特定的时间点。因为只有一个文件需要处理,因此维护每个版本的数据非常简单,以及在维护Redis集群时,各节点上的RDB文件可以按照需要进行传输和重备份。

RDB的缺点

RDB持久化方式不太适合用作实时数据备份的解决方案,就算在数据较快的交易场景也无法做到实时备份。因为在发生意外宕机时,最近一次快照备份的数据就会被丢失。

什么是AOF

Redis的AOF持久化方式是一种日志型的实时持久化方式。在Redis使用AOF方式时,每当Redis执行了一条修改数据的指令时,它就会将这条指令以命令的形式写入到一个AOF文件中,当Redis需要恢复数据时,会执行AOF文件中所有的指令。

AOF实现原理

AOF是Redis服务器的一个追加文件,Redis对执行的每个写命令在这个文件的结尾添加一条日志记录。而当Redis需要在服务器启动时或者重启时重建数据集时,将会按照写命令在文件中的顺序将日志文件中的命令重新执行一遍。

AOF的优点

AOF持久化方式会记录所有的修改操作,并且在Redis各项命令执行完毕后才会写入AOF文件,并没有延时。由于这个原因,即使在发生意外宕机时,最后一条日志条目也不会丢失。这种持久化方式足以极大程度上减少数据丢失的风险。

此外,AOF持久化方式还可以在增量模式下运行,这个模式下,Redis只会在master节点上执行。它只包含对现有数据的修改,而RDB在执行快照操作时,需要将整个Redis的内存全部写入到磁盘,因此AOF的处理速度通常比RDB快。

AOF的缺点

相比RDB方式,AOF方式虽然在进行数据备份时更加实时和精确,但是也因为历史执行过的所有指令都必须保存,会导致文件变得更加庞大和臃肿。因此,AOF恢复速度较RDB慢,且文件需要定期进行重写,否则文件大小会无限制增长。

两种持久化方式的选择

通过对比两种持久化方式的优缺点,我们可以发现,在实际的应用环境中使用哪种持久化方式,应根据实际场景来决定。比如,对于对所有数据备份都十分在意的应用场合,我们可以使用AOF持久化方式来避免数据的丢失,因为它可以在实时记录所有修改指令的情况下,保证了数据的完整性。而在快速备份和数据恢复速度重要的场合,推荐使用RDB持久化方式。因为RDB生成的快照文件较小,恢复速度快,在处理大规模数据的情况下,可以大大减少CPU的负担。

以最常用的互联网行业为例:对于互联网行业中的用户行为数据,因为需要实时访问和修正,建议使用AOF方式进行持久化,由于持久化过程中具有一定的延时,因此在快照备份的情况下,应该适量减少备份周期;对于系统配置数据,由于配置数据相对比较小,使用RDB持久化方式更为合适。

总结

在实际应用中,RDB与AOF方式可以作为完全不同的两种备份方案,依据各自优缺点与传输数据的需求进行选择。虽然对于绝大部分的Redis应用,在容错方面还是有RDB和AOF两种方式同时启动才能实现全面的保护,但是掌握这两种方式的差异性和适用范围,有助于更好地理解Redis数据的传输。

最后,总结一下:

  1. RDB与AOF并无取代关系,可以同时启用来实现全方位数据备份;

  2. RDB生成的快照文件较小,恢复速度快,在处理大规模数据的情况下,不会对CPU造成大的影响;

  3. AOF通过实时记录所有修改指令,保证数据的完整性,但是会导致文件变得更加庞大和臃肿,需要定期进行重写。

  4. 实际应用中应根据具体场景选择合适的数据备份方式。

标签:AOF,持久,redis,Redis,RDB,快照,数据,化机制
From: https://www.cnblogs.com/shenhui323/p/18342544

相关文章

  • Redis事务和管道
    Redis事务和管道事务一、概念Redis事务是可以一次执行多个命令,本质是一组命令的集合。一个事务中的所有命令都会序列化,按顺序地串行化执行而不会被其他命令插入。 单独的隔离操作:Redis事务仅仅是保证事务里的操作会被连续独占地执行,redis命令执行是单线程架构,在执行完事务......
  • redis通过6379端口无法连接服务器
    今天免费领取了一台云耀云服务器,但是在部署redis的时候碰到了redis在外网无法访问的情况,以下是针对碰到的问题,解决过程的记录。如果配置Redis在不可预知的情况下只能在内网访问,而外网无法访问,先检查一下步骤是否配置1、需要考虑到Redis配置本身是否支持远程外网访问,在redis的配置......
  • Docker 实战:快速安装 Nginx、Redis、MySQL 等常用软件
    演示下如何使用Docker来完成Redis,Tomcat和MySQL等常用软件的安装。介绍了这几个常见的软件安装之后,以后想要安装其他软件,也是依样画葫芦即可。‍总体步骤一般来说,按照如下步骤来完成安装:搜索镜像拉取镜像查看镜像启动镜像(可能需要配置端口映射)容器的操作(例如启停)......
  • 可持久化数据结构
    可持久化线段树看这个。可持久化字典树最大异或和考虑设\(s\)为\(a\)的前缀异或和数组,我们最终的答案就是找一个\(p\in[l-1,r-1]\),然后求出\(s_n\operatorname{xor}x\operatorname{xor}s_p\)。首先,对于最大异或数对问题,可以使用\(01\)\(trie\)解决,这里不再赘述。......
  • 小说推文:每日三位数收益轻松实现,稳定回报持久保障!
    该项目操作简便,仅需制作和发布视频即可,且全程可通过AI工具完成。项目潜力巨大,短视频平台用户基础广泛,覆盖面广。此外,同一视频可发布至多个平台,不会被判定为非原创。随着短视频平台的持续发展和用户基数的增长,小说推文项目依然具有很大的发展潜力。我们希望更多的人能发现并......
  • 小说推文:每日三位数收益轻松实现,稳定回报持久保障!
    该项目操作简便,仅需制作和发布视频即可,且全程可通过AI工具完成。项目潜力巨大,短视频平台用户基础广泛,覆盖面广。此外,同一视频可发布至多个平台,不会被判定为非原创。随着短视频平台的持续发展和用户基数的增长,小说推文项目依然具有很大的发展潜力。我们希望更多的人能发现并......
  • 小说推文:每日三位数收益轻松实现,稳定回报持久保障!
    该项目操作简便,仅需制作和发布视频即可,且全程可通过AI工具完成。项目潜力巨大,短视频平台用户基础广泛,覆盖面广。此外,同一视频可发布至多个平台,不会被判定为非原创。随着短视频平台的持续发展和用户基数的增长,小说推文项目依然具有很大的发展潜力。我们希望更多的人能发现并......
  • Redis的五大数据类型
    Redis的五大数据类型目录一、String数据类型1.SET/GET/APPEND/STRLEN:2.INCR/DECR/INCRBY/DECRBY:3.GETSET:4.SETEX:5.SETNX:6.MSET/MGET/MSETNX:二、List数据类型1.LPUSH/LPUSHX/LRANGE:2.LPOP/LLEN:3.LREM/LSET/LINDEX/LTRIM:4.LINSERT:5.RPUSH/RPUSHX/RPOP/RPOPLPU......
  • redis本机安装
    redis本机安装1、windows版下载:Releases·microsoftarchive/redis·GitHub 2、下载后解压下载的文件即可,无需安装3、 启动服务第一种先点击redis-server.exe再点击redis-cli.exe,两个窗口都不用关,然后开始敲命令第二种运行指令:redis-server.exeredis.windows.c......
  • RAG与LLM原理及实践(17)---Docker Redis & Python Usage
    目录背景Redis环境download修改镜像RunRedisCodingpythonredisdownload基本使用描述完整代码运行结果高阶用法序列化的方式 Snapshot与AOF快照(RDB)AOF(Append-OnlyFile)代码总结发布与订阅描述     代码运行结果注意事项解释Transanction......