news 2026/5/4 4:41:52

华为OD技术面真题 - 数据库Redis - 2

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
华为OD技术面真题 - 数据库Redis - 2

文章目录

  • 说说Redis的持久化机制
    • RDB持久化
    • AOF持久化
    • 混合模式
  • 不同持久化方案适合什么场景
  • Redis内存淘汰策略了解吗
  • 什么是Redis事务

说说Redis的持久化机制

Redis是内存数据库,如果不提供持久化机制,当redis进程退出或者宕机时,数据会丢失。redis为了保证重启/宕机等情况保证数据不全部丢失,提供了持久化机制。

Redis提供三种持久化机制:

  • 快照(RDB)
  • 可追加文件(AOF)
  • RDB和AOF混合持久化

RDB持久化

RDB持久化本质上是创建当前Redis数据的快照RDB文件(副本)。有了RDB文件之后,在发生程序崩溃/重启可利用RDB恢复数据库内容,Redis默认的持久化机制。

RDB持久化触发方式:

  • 手动触发:
    • 手动执行save命令:阻塞当前Redis服务器,直到RDB过程完成为止,对于内存 比较大的实例会造成长时间阻塞,线上环境不建议使用。
    • 手动执行bgsave命令:Redis进程执行fork操作创建子进程,RDB持久化过程由子 进程负责,完成后自动结束。阻塞只发生在fork阶段,一般时间很短。
  • 自动触发:
    • redis.conf配置文件默认会有save m n,即在m秒内有n次修改时,自动触发bgsave生成rdb文件。
    • 默认情况下执行shutdown命令,如果没有开启aof持久化,也会自动触发save命令。

RDB持久化的优缺点:

  • 优点:
    • 文件体积小
    • 读取RDB文件恢复数据快。
  • 缺点:
    • RDB方式实时性不够,无法做到秒级的持久化;
    • fork 子进程有性能和内存压力。

RDB也是进行主从同步数据的载体。

AOF持久化

AOF的出现是为了解决 RDB 数据丢失窗口过大的问题,提供更好的更好实时性保存的持久化机制。通过更改redis.conf配置文件中appendonly yes来启用AOF持久化。AOF持久化本质上看作一个操作日志文件,通过记录更改数据库的命令,然后落盘到文件中,以达到发生程序崩溃/重启时重放命令恢复数据,。

AOF的持久化功能实现可分为以下步骤;

  1. 命令追加(append):所有写命令会追加到AOF缓冲区中。
  2. 文件写入(write):将 AOF 缓冲区的数据写入到 AOF 文件中,此步是将AOF缓存区数据写入到操作系统内核缓冲区。此时并没有进行数据落盘
  3. 文件同步(fsync):根据appendfync配置,redis会按照指定频率,调用fync函数,强制数据落盘,保证数写入磁盘文件。这步执行完成后才代表数据真正被保存

redis中提供appendfync策略有以下几种:

  • always: 同步写回,执行写命令之后,立即执行命令追加文件写入步骤,同时主线程调用fsync命令,阻塞同步直到数据落盘。最安全的一种策略,理论上不会丢失数据,同时性能最差
  • Everysec: 每秒写回,每个写命令执行完,先把日志写到AOF文件的内存缓冲区并执行write操作,后台线程每隔一秒执行fync写入磁盘;性能 + 实时性综合的方案
  • No:操作系统控制的写回,reids不会主动执行fsync命令。实时性最差, 性能最好的方案。

上面提高AOF本质是以追加方式记录Redis已经执行的写命令,随着时间越来越长,AOF文件会变得越来越大。如果不加以控制,AOF文件越大,导致数据恢复也越慢,基于此Redis提供AOF重写机制,限制AOF文件不断增长。AOF重写机制原理是通过读取数据库中的键值对来实现的,程序无须对现有 AOF 文件进行任何读入、分析或者写入操作。,步骤大概如下

  1. AOF重写会执行大量写操作,reids将AOF重写使用子进程执行。
  2. AOF 文件重写期间,Redis 还会维护一个AOF 重写缓冲区,该缓冲区会在子进程创建新 AOF 文件期间,记录服务器执行的所有写命令。当子进程完成创建新 AOF 文件的工作之后,服务器会将重写缓冲区中的所有内容追加到新 AOF 文件的末尾,使得新的 AOF 文件保存的数据库状态与现有的数据库状态一致。
  3. 服务器用新的 AOF 文件替换旧的 AOF 文件,代表重写的完成。

混合模式

Redis 4.0 中提出了一个混合使用 AOF 日志和内存快照的方法。简单来说,内存快照以一定的频率执行,在两次快照之间,使用 AOF 日志记录这期间的所有命令操作。

混合模式的优点:

  • 快照不用很频繁地执行,这就避免了频繁 fork 对主线程的影响
  • AOF 日志也只用记录两次快照间的操作,也就是说,不需要记录所有操作了,因此,就不会出现文件过大的情况了,也可以避免重写开销。
  • 既能享受到 RDB 文件快速恢复的好处,又能享受到 AOF 只记录操作命令的简单优势。

不同持久化方案适合什么场景

只使用RDB的场景:

  • 缓存型业务
  • 数据可从关系型数据库或其它途径恢复
  • 容忍数据少量数据丢失。

只使用AOF场景:

  • 可容忍性能下降
  • 数据非常重要
  • 不希望丢失数据

混合模式场景:

  • 生产环境,核心业务
  • 既要保证数据不能丢失
  • 又要保证redis重启恢复数据快

Redis内存淘汰策略了解吗

Redis 的内存淘汰策略只有在运行内存达到了配置的最大内存阈值时才会触发,这个阈值是通过redis.confmaxmemory参数来定义的。

Redis提供以下几种内存淘汰策略:

  • no-eviction:默认内存淘汰策略,禁止驱逐数据,当内存不足以容纳新写入数据时,新写入操作会报错。
  • volatile-lru:从已设置过期时间的数据集中挑选最近最少使用的数据淘汰。
  • volatile-ttl:从已设置过期时间的数据集中挑选将要过期的数据淘汰。
  • volatile-random: 从已设置过期时间的数据集中任意选择数据淘汰。
  • allkeys-random: 从所有数据集中任意选择数据淘汰。
  • volatile-lfu:从已设置过期时间的数据集中挑选最不经常使用的数据淘汰。
  • allkeys-lfu: 从所有数据集中挑选最不经常使用的数据淘汰。

什么是Redis事务

Redis 事务是通过 MULTI 和 EXEC 将多个命令打包顺序执行的一种机制,能够保证事务执行期间不会被其他客户端的命令打断。Redis 事务不支持回滚,也不具备关系型数据库事务的完整 ACID 特性。

实际开发过程中,不太推荐使用Redis事务。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/2 12:57:09

Simulink电力系统仿真(Simulink仿真、报告、设计)(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

Simulink电力系统仿真(Simulink仿真、报告、设计)(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码1直流电机 1.2交流电机 1.3Simulink电力系统仿真工具箱3… 2两种电机的模型. 2.1直流电机模型3 2.2交流电机模型(三相异步电动机…

作者头像 李华
网站建设 2026/4/26 22:15:09

小程序毕设选题推荐:基于Android的旧物交易平台的设计与实现基于Android的二手货交易APP的设计与开发【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/4/23 12:57:33

Nodejs+vue闽南特色餐饮文化推广小程序

文章目录 项目背景技术架构核心功能创新点预期效果 --nodejs技术栈--结论源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式! 项目背景 闽南特色餐饮文化具有深厚的历史底蕴和独特的地域风味,但受限于传播渠道,其影…

作者头像 李华
网站建设 2026/5/2 3:06:09

计算机等级考试(二级WPS)---第4章:创建与处理演示文档--- 操作题题库

目录 第 1 题:打开 WPP1.pptx 文档,将演示文稿 “第 3-5 节.pptx” 和 “第 1-2 节.pptx” 中的所有幻灯片合并到 “WPP1.pptx” 中,要求所有幻灯片保留原来的格式。 第 2 题:打开 WPP2.pptx 文档,为各张幻灯片分别选择合适的版式:幻灯片 3、5、9 应用节标题版式,幻灯…

作者头像 李华