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

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

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

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

1688446378341.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、什么是 AOF

==AOF(Append Only File)是Redis的一种持久化方式,用于将Redis的写操作以追加的方式记录到一个文件中,实现数据的持久化。==

==AOF持久化相对于RDB持久化来说,数据的完整性更好,因为它记录了每一个写操作。当Redis重启时,可以通过重新执行AOF文件中的指令来恢复数据。此外,AOF文件是一个文本文件,易于阅读和分析。==

==然而,AOF持久化的写入速度相对较慢,因为每个写操作都需要追加到AOF文件中。此外,AOF文件的体积可能会比RDB文件大,因为它记录了所有写操作指令。==

3、AOF 的优缺点

AOF(Append Only File)是Redis的一种持久化方式,它具有以下优点和缺点:

优点:

  1. 数据完整性高:AOF记录了每一个写操作指令,因此在Redis重启时可以通过重新执行AOF文件中的指令来恢复数据,数据的完整性较好。
  2. 可读性强:AOF文件是一个文本文件,易于阅读和分析,可以方便地查看和理解Redis的写操作历史。
  3. 可以实现更好的持久化策略:AOF提供了不同的持久化选项,如每秒同步、每个写操作同步等,可以根据需求选择不同的策略,实现更灵活的数据持久化。

缺点:

  1. 写入性能相对较低:由于每个写操作都需要追加到AOF文件中,AOF持久化的写入性能相对较低,可能会影响Redis的性能。
  2. 文件体积较大:AOF文件记录了每一个写操作指令,因此文件体积相对较大,比RDB文件大。
  3. AOF文件恢复速度较慢:当AOF文件较大时,在Redis重启时需要重新执行AOF文件中的指令来恢复数据,恢复速度相对较慢。

    4、AOF 的原理

    ==AOF(Append Only File)是Redis的一种持久化方式,它通过将写操作以追加的方式记录到一个文件中,实现数据的持久化。AOF持久化的原理如下:==

  4. 当Redis执行写操作(如SET、DEL等)时,不仅会将数据写入内存中,还会将操作以追加的方式写入AOF文件中。

  5. AOF文件是一个文本文件,它记录了Redis服务器接收到的所有写操作指令。每个写操作都以Redis协议的格式写入AOF文件。

  6. Redis服务器在启动时会读取AOF文件,将其中的写操作重新执行一遍,从而恢复数据。这个过程被称为AOF重写。

  7. Redis还提供了AOF重写机制,用于优化AOF文件的大小和性能。AOF重写会生成一个新的AOF文件,其中只包含恢复数据所需的最少操作,去除了AOF文件中的冗余操作。

  8. Redis还支持AOF文件的同步方式。可以选择每个写操作都同步到磁盘,或者每秒同步一次,或者不同步,根据需求选择合适的同步策略。

总结来说,AOF持久化通过将写操作追加到AOF文件中,实现数据的持久化。Redis在启动时会读取AOF文件并重新执行写操作,从而恢复数据。AOF重写机制可以优化AOF文件的大小和性能。

5、AOF 如何配置使用

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

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

  2. 找到并修改以下配置项,以启用AOF持久化:

appendonly yes
  1. 可选:如果需要配置AOF文件的同步策略,可以修改以下配置项:
appendfsync always

这将使每个写操作都同步到磁盘,保证数据的完整性。其他可选的选项包括 appendfsync everysec (每秒同步一次)和 appendfsync no (不同步)。

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

配置完成后,Redis将开始将写操作追加到AOF文件中。AOF文件的默认名称为appendonly.aof,它会在Redis服务器的工作目录下生成。

需要注意的是,AOF持久化方式相对于RDB持久化方式来说,对于服务器的写入性能要求更高,因为每个写操作都需要追加到AOF文件中。因此,在配置AOF持久化时,需要根据服务器的负载和性能需求进行权衡和调整。
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的AOF持久化:保障数据安全与恢复性能的关键机制
深入探究Redis的AOF持久化:保障数据安全与恢复性能的关键机制
13 0
|
2月前
|
监控 NoSQL Redis
Asynchronous AOF fsync is taking too long (disk is busy?). Writing the AOF buffer without waiting for fsync to complete, this may slow down Redis.
Asynchronous AOF fsync is taking too long (disk is busy?). Writing the AOF buffer without waiting for fsync to complete, this may slow down Redis.
|
5月前
|
NoSQL 关系型数据库 MySQL
Redis持久化机制 RDB 和 AOF 的选择
Redis持久化机制 RDB 和 AOF 的选择
84 0
|
2月前
|
缓存 NoSQL Redis
redis数据持久化之RDB和AOF
redis数据持久化之RDB和AOF
下一篇
无影云桌面