【Redis-面试题及持久化方案】Redis相关面试题(缓存穿透、缓存击穿、缓存血崩) Redis两种持久化方案详情对比(RDB、AOF)

news2024/11/25 15:48:14

【Redis-面试题及持久化方案】Redis相关面试题(缓存穿透、缓存击穿、缓存血崩) & Redis两种持久化方案详情对比(RDB、AOF)

  • 1)Redis 面试题
    • 1.1.高频面试题:缓存穿透、缓存击穿、缓存血崩
    • 1.2.低频面试题:有关 redis 集群的面试题
  • 2)Redis 的持久化
    • 2.1.RDB 的持久化方案
      • 2.1.1.介绍
      • 2.1.2.RDB方案优点
      • 2.1.3.RDB方案缺点
      • 2.1.4.RDB配置
    • 2.2.AOF的持久化方案
      • 1.1.1.介绍
      • 1.1.2.开启AOF
      • 1.1.3.配置AOF
      • 1.1.4.AOF rewrite
      • 1.1.5.AOF优点
      • 1.1.6.AOF的缺点
    • 2.3.RDB or AOF

1)Redis 面试题

1.1.高频面试题:缓存穿透、缓存击穿、缓存血崩

在这里插入图片描述

1.2.低频面试题:有关 redis 集群的面试题

从 Redis 3.0 发布提供 Redis Cluster 以后,经历 Redis 4.x、Redis5.x 和 Redis 6.x 一系列版本,Redis Cluster 更加成熟、稳定,推荐企业使用此种架构,通常公司也是使用此种架构。如果使用 Redis Cluster 集群,面试中碰到的问题有一些坑,还望注意。

  • 问题一:Redis 的多数据库机制,了解多少?

    在这里插入图片描述

  • 问题二:懂 Redis 的批量操作么?

    在这里插入图片描述

  • 问题三:Redis 集群机制中,你觉得有什么不足的地方吗?

    在这里插入图片描述

  • 问题四:在 Redis 集群模式下,如何进行批量操作?

    在这里插入图片描述

  • 问题五:懂 Redis 事务么?

    在这里插入图片描述

2)Redis 的持久化

2.1.RDB 的持久化方案

2.1.1.介绍

Redis 会定期保存数据快照至一个 rbd 文件中,并在启动时自动加载 rdb 文件,恢复之前保存的数据。可以在配置文件中配置 Redis 进行快照保存的时机:

save [seconds] [changes]

意为在seconds秒内如果发生了changes次数据修改,则进行一次RDB快照保存,例如

save 60 100

会让 Redis 每60秒检查一次数据变更情况,如果发生了100次或以上的数据变更,则进行 RDB 快照保存。可以配置多条 save 指令,让 Redis 执行多级的快照保存策略。Redis 默认开启 RDB 快照。也可以通过 SAVE 或者 BGSAVE 命令手动触发 RDB 快照保存。SAVE 和 BGSAVE 两个命令都会调用 rdbSave 函数,但它们调用的方式各有不同:

  • SAVE 直接调用 rdbSave ,阻塞 Redis 主进程,直到保存完成为止。在主进程阻塞期间,服务器不能处理客户端的任何请求。

  • BGSAVE 则 fork 出一个子进程,子进程负责调用 rdbSave ,并在保存完成之后向主进程发送信号,通知保存已完成。 Redis 服务器在 BGSAVE 执行期间仍然可以继续处理客户端的请求。

2.1.2.RDB方案优点

1、对性能影响最小。如前文所述,Redis在保存RDB快照时会fork出子进程进行,几乎不影响Redis处理客户端请求的效率。

2、每次快照会生成一个完整的数据快照文件,所以可以辅以其他手段保存多个时间点的快照(例如把每天0点的快照备份至其他存储媒介中),作为非常可靠的灾难恢复手段。

3、使用RDB文件进行数据恢复比使用AOF要快很多。

2.1.3.RDB方案缺点

1、快照是定期生成的,所以在 Redis crash 时或多或少会丢失一部分数据。

2、如果数据集非常大且 CPU 不够强(比如单核 CPU),Redis 在 fork 子进程时可能会消耗相对较长的时间,影响 Redis 对外提供服务的能力。

2.1.4.RDB配置

(1)修改redis的配置文件

cd /export/server/redis-3.2.8/conf
vim redis.conf
# 第202行
save 900 1
save 300 10
save 60 10000
save 5 1

这三个选项是redis的配置文件默认自带的存储机制。表示每隔多少秒,有多少个key发生变化就生成一份 dump.rdb 文件,作为 redis 的快照文件。

例如

save 60 10000 表示在60秒内,有10000个key发生变化,就会生成一份redis的快照。

(2)重新启动redis服务

每次生成新的 dump.rdb 都会覆盖掉之前的老的快照

ps -ef | grep redis
bin/redis-cli -h node1.itcast.cn shutdown
bin/redis-server redis.conf

2.2.AOF的持久化方案

1.1.1.介绍

采用 AOF 持久方式时,Redis 会把每一个写请求都记录在一个日志文件里。在 Redis 重启时,会把 AOF 文件中记录的所有写操作顺序执行一遍,确保数据恢复到最新。

1.1.2.开启AOF

AOF 默认是关闭的,如要开启,进行如下配置:

# 第594行
appendonly yes

1.1.3.配置AOF

AOF提供了三种fsync配置:

always/everysec/no(通过配置项[appendfsync]指定)

  • appendfsync no不进行fsync,将flush文件的时机交给OS决定,速度最快

  • appendfsync always每写入一条日志就进行一次fsync操作,数据安全性最高,但速度最慢

  • appendfsync everysec折中的做法,交由后台线程每秒fsync一次

1.1.4.AOF rewrite

随着 AOF 不断地记录写操作日志,因为所有的写操作都会记录,所以必定会出现一些无用的日志。大量无用的日志会让 AOF 文件过大,也会让数据恢复的时间过长。不过 Redis 提供了 AOF rewrite 功能,可以重写 AOF 文件,只保留能够把数据恢复到最新状态的最小写操作集。

AOF rewrite可以通过BGREWRITEAOF命令触发,也可以配置Redis定期自动进行:

auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
  • Redis在每次AOF rewrite时,会记录完成rewrite后的AOF日志大小,当AOF日志大小在该基础上增长了100%后,自动进行AOF rewrite

  • auto-aof-rewrite-min-size最开始的AOF文件必须要触发这个文件才触发,后面的每次重写就不会根据这个变量了。该变量仅初始化启动Redis有效

1.1.5.AOF优点

1、最安全,在启用 appendfsync 为 always 时,任何已写入的数据都不会丢失,使用在启用 appendfsync everysec 也至多只会丢失1秒的数据。

2、AOF 文件在发生断电等问题时也不会损坏,即使出现了某条日志只写入了一半的情况,也可以使用 redis-check-aof 工具轻松修复。

3、AOF 文件易读,可修改,在进行某些错误的数据清除操作后,只要 AOF 文件没有 rewrite,就可以把 AOF 文件备份出来,把错误的命令删除,然后恢复数据。

1.1.6.AOF的缺点

1、AOF 文件通常比 RDB 文件更大。

2、性能消耗比 RDB 高。

3、数据恢复速度比 RDB 慢。

Redis的数据持久化工作本身就会带来延迟,需要根据数据的安全级别和性能要求制定合理的持久化策略:

  • AOF + fsync always 的设置虽然能够绝对确保数据安全,但每个操作都会触发一次 fsync,会对 Redis 的性能有比较明显的影响

  • AOF + fsync every second 是比较好的折中方案,每秒 fsync 一次

  • AOF + fsync never 会提供 AOF 持久化方案下的最优性能

使用RDB持久化通常会提供比使用AOF更高的性能,但需要注意RDB的策略配置。

2.3.RDB or AOF

每一次 RDB 快照和 AOF Rewrite 都需要 Redis 主进程进行 fork 操作。fork 操作本身可能会产生较高的耗时,与 CPU 和 Redis 占用的内存大小有关。根据具体的情况合理配置 RDB 快照和 AOF Rewrite 时机,避免过于频繁的 fork 带来的延迟。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/424246.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电脑0X000000D1蓝屏错误U盘重新安装系统教学

电脑0X000000D1蓝屏错误U盘重新安装系统教学。最近有用户遇到了电脑桌面变成了0X000000D1错误代码的蓝屏界面了,无法继续操作使用。那么这个问题怎么去进行系统U盘重装呢?来看看以下的详细解决方法吧。 准备工作: 1、U盘一个(尽量…

智慧城市我国发展现状怎样?

智慧城市从概念提出到落地实践,历经十多年的建设与发展,我国智慧城市建设数量持续增长。我国智慧城市整体建设和发展情况总结如下。 北京智汇云舟科技有限公司成立于2012年,专注于创新性的“视频孪生(实时实景数字孪生)”技术研发与应用。目前…

江南爱窗帘十大品牌,怎么合理的搭配窗帘配色

窗帘行业圈:窗帘行业内部交流圈,窗帘从业者的交流内部圈。 当阳光照进房间的那一刻, 光线给空间带来了无限的可能。 窗边的帘帐既是美丽的风景 又是可爱的魔术师。 在光影变幻的时空里 让你的生活布满温馨和奇幻。 1.窗帘材质怎么选 窗帘的材…

DataSecurity Plus如何阻止数据泄露

随着互联网的发展,数据泄露事件时有发生,给个人和企业造成了巨大的损失。为了保护数据安全,企业需要采取一系列的安全措施,而其中一项重要的措施就是使用数据安全工具。DataSecurity Plus 是一款功能强大的数据安全工具&#xff0…

苹果AirPods耳机推送新固件更新,TWS耳机与Find My可实现智能防丢

苹果推送 iOS / iPadOS 16.5 Beta 2 更新的同时,原本还为 AirPods 耳机推送了固件更新 5E133。苹果在临时撤回之后,再次向用户推送了本次更新, 苹果官方表示当你的 AirPods 在充电且在 iPhone、iPad 或 Mac 的蓝牙通信范围内时,…

【LeetCode:(每日一题1023. 驼峰式匹配) -> 剑指 Offer II 097. 子序列的数目 | 暴力递归=>记忆化搜索=>动态规划】

🍎作者简介:硕风和炜,CSDN-Java领域新星创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎 🍎座右…

iOS 吸顶效果

项目中,在列表向上滚动时,有时需要将某个控件置顶,这就是我们常见的吸顶效果。 1. UITableView 吸顶效果 UITableView是自带吸顶效果,我们把需要置顶的控件设置为SectionHeaderView,这样在滚动时,该控件会…

360城市全景,开启全新城市探索方式

引言 360城市全景技术的出现和发展,让我们的生活方式和观念发生了革命性的变化。在过去,我们只能通过实地旅行、图片和视频来了解不同城市的文化、建筑和风景。现在,通过360城市全景技术,我们可以像亲临现场一样,透过…

Vue实现自动化平台(四)--接口管理页面的实现

上一章: Vue实现自动化平台(三)_做测试的喵酱的博客-CSDN博客 github地址:https://github.com/18713341733/vuemiaotest 这个目前只是用来练手的,项目还没成型。等以后我写完了,再更新一下项目链接。 …

软件测试——概念篇

目录 一、软件的生命周期 二、瀑布模型(Waterfall Model) 优点: 缺点: 三、螺旋模型(Spiral Model) ​编辑优点: 缺点: 四、增量、迭代 区别: 五、敏捷 scrum…

windows下如何搭建属于自己的git服务器

前一阵子公司需要,领导让我给我们技术部搭建一个git服务器。以前看过教程,但自己没动手做过,开始按照网上的教程来,但搭建过程中发现还是不够详细,今天给大家一个比较详细的,希望对大家有帮助。 高能预警&…

DB2安装指导文档

操作系统windowsXP 版本:9.1.7 一:db2安装 用户为当前操作系统得用户 域为空 二:添加许可证,因为当前系统得试用期已到,所以必须输入有效的序列号,在安装数据库的过程中有时候也会莫名的死掉&#xff0c…

【LeetCode: 剑指 Offer II 099. 最小路径之和 | 暴力递归 | DFS =>记忆化搜索=>动态规划】

🍎作者简介:硕风和炜,CSDN-Java领域新星创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎 🍎座右…

4.java程序员必知必会类库之xml解析库

前言 百度百科解释 可扩展标记语言 (Extensible Markup Language, XML) ,标准通用标记语言的子集,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML是标准通用标记语言 可扩展性良好,内容与形式分离,遵…

(2023)基于多模态概率融合提示的少样本多模态情感分析

论文题目(Title):Few-shot Multimodal Sentiment Analysis based on Multimodal Probabilistic Fusion Prompts 研究问题(Question):用概率融合提示进行少样本的情感分析任务 研究动机(Motiva…

IDEA插件-Lombok

在 Java 开发领域中,Lombok 插件已经成为一个非常流行的代码库。该插件让 Java 开发更加便捷、高效,因此提高了开发者的生产力。本文将对 Lombok 插件进行详细的介绍和分析。 1.Lombok是什么 Lombok 是一款 Java 开发工具,它可以通过注解来…

《离散数学导学》精炼——第8章(关系)

学无止境追求真,勤奋刻苦起点新。每日精进千里路,成功不是梦想闲。 文章目录引言正文第八章 关系定义定义域,值域关系的逆关系上的运算(重点)关系的合成同类关系和异类关系关系的性质(重难点)顺…

OpenAI-ChatGPT最新官方接口《嵌入向量式文本转换》全网最详细中英文实用指南和教程,助你零基础快速轻松掌握全新技术(五)(附源码)

Embeddings 嵌入向量式文本转换前言Overview 概述What are embeddings? 什么是嵌入?How to get embeddings 如何获取嵌入python代码示例cURL代码示例Embedding models 嵌入模型Second-generation models 第二代模型First-generation models (not recommended) 第一…

Kubernetes 多集群管理工具Rancher 使用介绍

目录 一、Rancher 简介 2.1 Run Kubernetes Everywhere 2.2 满足 IT 需求规范 2.3 赋能 DevOps 开发团队 2.4 Rancher API Server 的功能 2.4.1授权和角色权限控制 2.4.2使用 Kubernetes 的功能 2.4.3 配置云端基础信息 2.4.4 查看集群信息 2.5 编辑下游集群 二、Ra…

漏洞挖掘-漏洞扫描

一、工具 1.针对某种漏洞 (1)sqlmap python sqlmap.py -u "url" --dbs 枚举所有数据库 python sqlmap.py -u "url" --current -db 当前数据库 python sqlmap.py -u "url" -D db_name --tables …