【大厂面试必问】Redis 的持久化 RDB

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 【大厂面试必问】Redis 的持久化 RDB

博主介绍: ✌博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家✌

Java知识图谱点击链接:体系化学习Java(Java面试专题)

💕💕 感兴趣的同学可以收藏关注下不然下次找不到哟💕💕

1688444868022.jpg

1、Redis 的持久化有哪几种方式

Redis的持久化有两种方式:RDB(Redis Database)和AOF(Append Only File)。

  1. RDB持久化:RDB是Redis的默认持久化方式。它通过将Redis的内存数据以快照的形式保存到磁盘上的一个二进制文件中。RDB持久化可以手动触发,也可以根据配置文件中的自动保存规则定期触发。RDB持久化适合用于备份、灾难恢复等场景。

  2. AOF持久化:AOF持久化是将Redis的所有写操作以追加的方式写入到一个文件中。AOF持久化可以通过配置文件中的不同策略来控制写入的频率,包括每次写入、每秒写入一次、不写入等。AOF持久化相对于RDB持久化来说,数据更加安全,但是文件体积较大,恢复速度较慢。

    2、什么是 RDB

==RDB(Redis Database)是Redis的一种持久化方式。它通过将Redis的内存数据以快照的形式保存到磁盘上的一个二进制文件中。RDB持久化可以手动触发,也可以根据配置文件中的自动保存规则定期触发。==

RDB持久化的过程包括以下几个步骤:

  1. Redis会fork出一个子进程,负责将数据写入到磁盘上的RDB文件中。
  2. 在写入RDB文件之前,Redis会将内存中的数据进行快照,生成一个临时的RDB文件。
  3. 当临时RDB文件生成完成后,Redis会用这个文件替换掉之前的RDB文件,完成持久化。

RDB持久化相对于AOF持久化来说,文件体积较小,恢复速度较快。它适合用于备份、灾难恢复等场景。可以通过配置文件中的save指令来设置RDB持久化的触发条件,例如save 900 1表示在900秒内如果发生至少1次写操作,就触发RDB持久化。

3、RDB 的优缺点

RDB持久化方式有以下优点:

  1. 性能高:RDB持久化是将Redis内存数据以二进制快照的形式保存到磁盘上,相比AOF持久化,写入速度更快,恢复速度也更快。
  2. 文件体积小:RDB文件通常比AOF文件更小,占用更少的磁盘空间。
  3. 适合备份和灾难恢复:RDB持久化生成的快照文件可以方便地用于备份和灾难恢复,对于大规模数据的恢复更加高效。

然而,RDB持久化方式也存在一些缺点:

  1. 数据丢失风险:RDB持久化是一种点对点的持久化方式,即数据在某个时间点上的快照。如果在最后一次快照之后发生故障,可能会丢失最后一次快照之后的数据。
  2. 不适合实时性要求高的场景:RDB持久化是定期触发的,如果在两次快照之间发生故障,可能会丢失这段时间内的数据。
  3. 写入过程中可能会有性能影响:RDB持久化在生成快照文件时需要fork出一个子进程,这个过程可能会对Redis的性能产生一定的影响。

4、RDB 的原理

RDB(Redis Database)是Redis的一种持久化方式,它通过将Redis的内存数据以快照的形式保存到磁盘上的一个二进制文件中。

RDB持久化的原理如下:
1. 当满足触发条件(例如配置文件中的save指令)时,Redis会fork出一个子进程,负责将数据写入到磁盘上的RDB文件中。

  1. 在写入RDB文件之前,Redis会将内存中的数据进行快照,生成一个临时的RDB文件。
  2. 在生成临时RDB文件的过程中,Redis会阻塞主进程,保证数据的一致性。
  3. 当临时RDB文件生成完成后,Redis会用这个文件替换掉之前的RDB文件,完成持久化。
  4. 生成RDB文件后,Redis可以通过加载RDB文件来恢复数据。

RDB文件是一个二进制文件,包含了Redis在某个时间点上的数据快照。它包括了数据库的键值对、过期时间、数据类型等信息。

RDB持久化相对于AOF持久化来说,写入速度更快,文件体积更小。但它是一种点对点的持久化方式,可能会导致数据丢失。因此,在选择RDB持久化时,需要根据实际需求权衡数据的完整性和实时性。

5、RDB 如何配置使用

要配置和使用RDB持久化方式,你可以按照以下步骤进行操作:

  1. 打开Redis的配置文件redis.conf。

  2. 找到并确保以下配置项的值正确设置:

save 900 1
save 300 10
save 60 10000

这些配置项指定了RDB持久化的触发条件。上述配置表示在900秒内,如果至少有1个键发生变化;在300秒内,如果至少有10个键发生变化;在60秒内,如果至少有10000个键发生变化,则会触发RDB持久化。

  1. 如果你想手动触发RDB持久化,可以使用 SAVE 或者 BGSAVE 命令。 SAVE 命令会阻塞Redis服务器,直到RDB持久化完成;而 BGSAVE 命令会在后台进行RDB持久化,不会阻塞Redis服务器。

  2. RDB文件的保存路径和文件名可以在配置文件中指定,默认情况下会保存在Redis服务器的工作目录下。

dir /root/backup/directory
dbfilename dump.rdb

上述配置指定了RDB文件的保存路径为 /path/to/your/backup/directory ,文件名为 dump.rdb 。

  1. 重启Redis服务器,使配置生效。

配置完成后,Redis会根据配置的触发条件自动进行RDB持久化。你也可以通过手动触发的方式进行RDB持久化。RDB文件会保存在指定的目录中,可以用于备份和恢复数据。

1686494501743.jpg

💕💕 本文由激流原创,原创不易,感谢支持
💕💕喜欢的话记得点赞收藏啊

1687869804912.jpg

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
5天前
|
存储 缓存 NoSQL
Redis中的rdb和aof
本文深入探讨了Redis的持久化机制,包括RDB和AOF两种方式。详细解释了RDB的工作原理、优势和劣势,以及AOF的实现原理、配置选项、文件重写机制和三种数据同步方式,还介绍了AOF文件修复工具redis-check-aof的使用,并通过实例展示了如何开启和配置AOF持久化方式。
Redis中的rdb和aof
|
19天前
|
存储 缓存 NoSQL
【Java面试题汇总】Redis篇(2023版)
Redis的数据类型、zset底层实现、持久化策略、分布式锁、缓存穿透、击穿、雪崩的区别、双写一致性、主从同步机制、单线程架构、高可用、缓存淘汰策略、Redis事务是否满足ACID、如何排查Redis中的慢查询
【Java面试题汇总】Redis篇(2023版)
|
20天前
|
存储 NoSQL Redis
SpringCloud基础7——Redis分布式缓存,RDB,AOF持久化+主从+哨兵+分片集群
Redis持久化、RDB和AOF方案、Redis主从集群、哨兵、分片集群、散列插槽、自动手动故障转移
SpringCloud基础7——Redis分布式缓存,RDB,AOF持久化+主从+哨兵+分片集群
|
3天前
|
存储 缓存 NoSQL
Redis 大 Key 对持久化的影响及解决方案
Redis 大 Key 对持久化的影响及解决方案
10 1
|
10天前
|
缓存 监控 NoSQL
阿里面试让聊一聊Redis 的内存淘汰(驱逐)策略
大家好,我是 V 哥。粉丝小 A 面试阿里时被问到 Redis 的内存淘汰策略问题,特此整理了一份详细笔记供参考。Redis 的内存淘汰策略决定了在内存达到上限时如何移除数据。希望这份笔记对你有所帮助!欢迎关注“威哥爱编程”,一起学习与成长。
|
3天前
|
存储 NoSQL 安全
8)详解 Redis 的配置文件以及数据持久化
8)详解 Redis 的配置文件以及数据持久化
9 0
|
3天前
|
存储 NoSQL Redis
Redis的RDB快照:保障数据持久性的关键机制
Redis的RDB快照:保障数据持久性的关键机制
10 0
|
3天前
|
存储 缓存 NoSQL
深入探究Redis的AOF持久化:保障数据安全与恢复性能的关键机制
深入探究Redis的AOF持久化:保障数据安全与恢复性能的关键机制
13 0
|
2月前
|
存储 Java
【IO面试题 四】、介绍一下Java的序列化与反序列化
Java的序列化与反序列化允许对象通过实现Serializable接口转换成字节序列并存储或传输,之后可以通过ObjectInputStream和ObjectOutputStream的方法将这些字节序列恢复成对象。
|
2月前
|
XML 存储 JSON
【IO面试题 六】、 除了Java自带的序列化之外,你还了解哪些序列化工具?
除了Java自带的序列化,常见的序列化工具还包括JSON(如jackson、gson、fastjson)、Protobuf、Thrift和Avro,各具特点,适用于不同的应用场景和性能需求。
下一篇
无影云桌面