redis核心面试题一(架构原理+RDB+AOF)

文章目录

  • 0. redis与mysql区别
  • 1. redis是单线程架构还是多线程架构
  • 2. redis单线程为什么这么快
  • 3. redis过期key删除策略
  • 4. redis主从复制架构原理
  • 5. redis哨兵模式架构原理
  • 6. redis高可用集群架构原理
  • 7. redis持久化之RDB
  • 8. redis持久化之AOF
  • 9. redis持久化之混合持久化

0. redis与mysql区别

1.数据库类型MySQL是关系型数据库Redis是缓存数据库(非关系型数据库)
2.数据存放位置MySQL:数据存放在磁盘中Redis:数据存放在内存中
3.支持数据类型MySQL:数值、日期/时间、字符串Redis:String、Hash、List、Set、Zset

1. redis是单线程架构还是多线程架构

redis6.0版本之前是单线程,这里的单线程指的是网络IO和键值对读写命令是由一个线程完成的
redis6.0版本之前之后是多线程,这里的多线程指的是在网络IO请求过程中采用了多线程,但是键值对读写命令仍然是单线程的,并且持久化、集群数据同步、异步删除都是由额外的线程完成的。

所以redis仍然是线程安全的

2. redis单线程为什么这么快

  1. 命令执行基于内存操作,单条命令操作时间是几十纳秒

  2. 命令执行是单线程操作,避免了多线程上下文切换开销

  3. 高效的数据结构,包括全局Hash表、简单动态字符串、双向链表、跳跃表、整数数组

  4. 基于IO多路复用技术,能够保证大量并发下的效率,提高系统的吞吐量

在这里插入图片描述

3. redis过期key删除策略

1.惰性删除:	key达到过期时间,不会被立即删除,只有当读写到这个已经过期的key时,才会触发惰性删除策略删除该key2.定时删除:	由于惰性删除策略无法保证冷数据被及时删掉,所以Redis会定期(默认每100ms)主动淘汰一批已过期的key,这里的一批只是部分过期key,所以可能会出现部分key已经过期但仍然还没有被清理掉的情况3.主动删除:	当redis已用内存超过maxmemory限定时,触发主动清理策略,共8种内存淘汰策略
a)针对设置了过期时间的key1. volatile-ttl:	在设置了过期时间的键值对,根据过期时间的先后进行删除,越早过期的越先被删除。2. volatile-random:	在设置了过期时间的键值对,进行随机删除。3. volatile-lru:	会使用LRU算法筛选设置了过期时间的键值对删除。4. volatile-lfu:	会使用LFU算法筛选设置了过期时间的键值对删除。b)针对所有的key5. allkeys-random:	从所有键值对中随机选择并删除数据。6. allkeys-lru:		使用LRU算法在所有数据中进行筛选删除。7. allkys-lfu:		使用LFU算法在所有数据中进行筛选删除。c)不处理8. noeviction:不会剔除任何数据,拒绝所有写入操作并返回客户端错误信息,此时Redis只响应读操作。LRU算法(Least Recently Used,最近最久未使用):		 淘汰很久没被访问过的数据,以最近-次访问时间作为参考
LFU算法(Least Frequently Used,最不经常使用):		淘汰最近一段时间被访问次数最少的数据,以次数作为参考
绝大多数情况我们都可以用LRU策略,当存在大量的热点缓存数据时,LFU可能更好点

4. redis主从复制架构原理

常见的主从复制架构:总体来说,主数据库Master以写为主,从数据库Slave以读为主,整体负责读写分离、容灾恢复。

case1:一主二仆【中心化架构】 slaveof 新主库IP 新主库端口

case2:薪火相传【去中心化架构】 slaveof 新主库IP 新主库端口

case3:反客为主 slaveof no one

// 主从数据库数据同步过程
1.全量复制:【当主从服务器刚建立连接的时候,进行全量数据同步】a、首先从服务器连接到主服务器,发送psync命令进行数据全量同步(Redis2.8之前是sync命令)b、主服务器收到psync命令之后,执行bgsave命令生成RDB快照文件发送给从服务器c、从服务器收到RDB快照文件后,清空内存旧数据,将接收到的数据写入磁盘2、增量复制:【全量复制结束后,进行增量复制】a、主服务器每执行一个写命令就会向从服务器发送相同的写命令b、从服务器接收并执行收到的写命令。优点:(1)数据热备份:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。(2)故障恢复:	如果master宕掉了,哨兵模式可以提升一个新的master,实现故障转移,达到高可用。(3)负载均衡:	可以轻易实现横向扩展,实现读写分离,一个master用于写,多个slave 用于分摊读的压力缺点:(1)网络延迟:由于所有的写操作都是先在Master上操作,然后同步更新到Slave上,所以从Master同步到Slave服务器有一定的延迟(2)如果master宕掉了,普通主从模式无法自动切换master,必须使用哨兵模式

5. redis哨兵模式架构原理

优点:可以动态切换主从库,中心型公司首选

缺点:

  1. 单个master主节点提供写服务,redis存储的数据有限(<10G),并发量不足(<3w)
  2. 自动切换主从库会产生访问瞬断的情况,切换没有那么快

在这里插入图片描述

工作原理:

	哨兵是一个分布式系统,可以在一个架构中运行多个哨兵进程,这些进程使用流言协议(gossip protocols)来传播Master是否下线的信息,并使用投票协议(agreement protocols)来决定是否执行自动故障迁移以及选择哪个Slave作为新的Master。哨兵模式的简单工作原理如下:
(1)监控:哨兵会不断地检查你的MasterSlave是否运作正常。
(2)提醒:当被监控的某个Redis节点出现问题时,哨兵可以通过 API 向管理员或者其他应用程序发送通知。
(3)自动故障迁移:当Master不能正常工作时,哨兵会进行自动故障迁移操作,将其中一个Slave升级为新的Master  

6. redis高可用集群架构原理

  1. redis集群是一个由多个主从节点群组成的分布式服务器群,它具有复制、高可用和分片存储特性

  2. redis集群将每个节点设置成集群模式,这种集群模式没有中心节点,可水平扩展,可线性扩展到上万个节点(官方推荐不超过1000个节点)

  3. redis集群的性能和高可用性均优于之前版本的哨兵模式,且集群配置非常简单。

    大型公司首选

在这里插入图片描述

7. redis持久化之RDB

RDB(Redis DataBase)在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时将快照文件 (dump.rdb) 移动到redis安装目录并启动服务即可。

save 3600 1		# 15分钟变动1次
save 300 100	# 5分钟变动100次
save 60 10000	# 1分钟变动1w次save				save时只管保存,其它不管,全部阻塞。
bgsave			Redis会在后台异步进行快照操作, 快照同时还可以响应客户端请求。

在这里插入图片描述

RDB优点:1、持久化速度快:RDB在保存RDB文件时父进程唯一需要做的就是fork出一个子进程,接下来的工作全部由子进程来做,父进程不需要再做其他I0操作,所以RDB持久化方式可以最大化redis的性能。[适合大规模的数据持久化]2、恢复速度快:与AOF相比,RDB是一个非常紧凑的文件,RDB数据恢复会更快一些RDB缺点:1、内存膨胀:Fork的作用是复制一个与当前进程一样的进程,新进程的所有数据(变量、环境变量、程序计数器等)数值都和原进程一致,大致2倍的膨胀性需要考虑。2、数据丢失:在一定间隔时间做一次备份,所以如果redis意外down掉的话,就会丢失最后一次快照后的所有修改

8. redis持久化之AOF

AOF(Append Only File)是以日志的形式来记录每个写操作,将Redis执行过的所有写指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis 重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。

AOF配置【APPEND ONLY MODE】
appendonly no  										# 默认no
appendfilename "appendonly.aof" 	# 文件名
appendfsync [always/everysec/no]always		同步持久化,redis每次发生数据改变都会被立即记录到磁盘,性能较差但数据完整性最好everysec		默认推荐,异步操作,每秒记录一次,最多损失1s的数据no			不进行持久化
no-appendfsync-on-rewrite no 				# 重写时是否运用appendfsync,默认no即可,保证数据安全性
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
AOF优点:每修改同步:appendfsync always 同步持久化 每次发生数据变更会被立即记录到磁盘,性能较差但数据完整性比较好每秒同步:appendfsync everysec 异步操作,每秒记录 如果一秒内宕机,有数据丢失不同步:appendfsync no 从不同步AOF缺点:1、文件大、恢复慢:相同数据集的数据而言aof文件要远大于rdb文件,恢复速度慢于rdb2Aof运行效率要慢于rdb,每秒同步策略效率较好,不同步效率和rdb相同

在这里插入图片描述

redis默认使用AOF恢复数据,因为aof保存的数据更全面

9. redis持久化之混合持久化

背景:

  1. 重启Redis时,我们很少只使用RDB来恢复内存数据,因为这会丢失大量数据
  2. 通常使用AOF日志重放来恢复数据,但是重放AOF日志性能相对RDB来说要慢很多,当Redis数据很大,启动需要花费很长的时间
    Redis 4.0为了解决这个问题,带来了一个新的持久化选项一混合持久化
实现步骤:
步骤一:通过如下配置可以开启混合持久化(必须先开启aof):aof-use-rdb-preamble yes步骤二:此时AOF在重写时,不再是单纯将内存数据转换为RESP命令写入AOF文件,而是将重写这一刻之前的内存做RDB
快照处理,并且将RDB快照内容和增量的AOF修改内存数据的命令存在一起,都写入新的AOF文件步骤三:新的文件一开始不叫appendonly.aof,等到重写完新的AOF文件才会进行改名,覆盖原有的AOF文件,完成新旧两个AOF文件的替换。步骤四:redis重启的时候,可以先加载RDB的内容,然后再重放增量AOF日志就可以完全替代之前的AOF全量文件重放,因此重启效率大幅得到提升。

在这里插入图片描述

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

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

相关文章

穷人如何翻身赚钱?不妨试试这5个冷门生意,干好了,收入相当不错

根据统计数据&#xff0c;我国月收入超过3000元的人口已超过4亿&#xff0c;这意味着仍有约10亿人的月收入低于3000元。正因为如此&#xff0c;网络上许多人都自嘲为“穷人”。 然而&#xff0c;穷人真的无法改变自己的命运吗&#xff1f;并非如此。对于渴望赚钱的穷人来说&am…

传统蓝牙模块BR/EDR与低功耗蓝牙模块有什么区别?

传统蓝牙模块BR/EDR与低功耗蓝牙模块有什么区别&#xff1f;下面跟随美迅物联网MesoonRF从多个维度来了解。   概述&#xff1a;低功耗蓝牙采用了高斯频移键控&#xff08;GFSK&#xff09;。这里我们先抛开蓝牙的协议&#xff0c;单纯从Radio的角度看收发通信&#xff0c;Ra…

【Crypto】Url编码

文章目录 Url编码解题感悟 Url编码 Url编码 搞定 小小flag&#xff0c;拿下&#xff01; 解题感悟 有点饿了…

图数据库助力供应链柔性升级

导读 当今市场环境受短视频等流媒体影响&#xff0c;任何风险事件在社交网络中传播速度极其迅速&#xff0c;留给企业的反应时间按分秒计&#xff0c;传统供应链的年度计划面对剧烈变化的市场环境已失去意义。此外&#xff0c;受近年局势动荡的影响&#xff0c;市场需求和供应…

APISIX-简单使用

APISIX-简单使用 这个工具还是很不错的&#xff0c;可视化的配置很清晰 &#xff0c; 想用NGINX的配置模式也是可以的&#xff0c;就是要去修改配置文件了。 APISIX&#xff0c;一个很不错的可视化工具&#xff0c;用来代替Nginx相当不错&#xff0c;可作为Nginx的平替方案&…

【Python进阶】主流电商平台数据分析||数据采集返回商品详情主题链接主图SKU数据

Python是一种高级编程语言&#xff0c;广泛应用于软件开发、数据分析、人工智能、科学计算等领域。在软件开发方面&#xff0c;Python在网站开发、网络编程、桌面软件开发等方面有着广泛的应用。在数据分析和人工智能领域&#xff0c;Python的各种库如NumPy、Pandas、Matplotli…

守护者:ThingsBoard物联网网关在温室环境监测中的应用

系统设计 智慧农业温室大棚系统由传感器及执行设备、数据传输网关、智慧农业温室大棚管理平台组成。 系统支持实时采集温室大棚内的空气温湿度、土壤温湿度、光照和二氧化碳等环境参数&#xff0c;根据农作物的生长需求自动控制温室中电器设备的启停&#xff0c;从而达到植物生…

【Linux】信号集及信号集操作函数

文章目录 一、信号集是什么&#xff1f;二、信号集操作函数1. sigemptyset2. sigfillset3. sigaddset4. sigdelset5. sigismember6. sigprocmask (仅用于读取或更改block表)7. sigpending (仅用于读取pending表) 一、信号集是什么&#xff1f; 对于每个进程, 都有三个信号集, …

k8s集群部署成功后某个节点突然出现notready状态解决办法

通过&#xff1a; kubectl get nodes 查看master1节点为not ready 通过查看日志&#xff1a; journalctl -f -u kubelet.service 看到这里 查看状态&#xff1a; systemctl status kubelet.service 重启一样会报错 执行&#xff1a; swapoff -a 执行后&#xff0c;重启…

pytorch深度学习-环境搭建

1.Anaconda下载&#xff08;首先安装Anaconda不需要先安装Python了&#xff01;&#xff09; 版本 3.11. Download Anaconda Distribution | Anaconda 1.2 跳过注册直接下载 2.安装 直接next, (Install for 可以选择All Users&#xff0c;我选择的是All Users) 点击默认选项…

Qt Designer 使用笔记

目录 qt designer安装 预览 Ctrl R 使用 Qt Designer 设计的ui文件可以通过以下命令转为.py文件 命令行脚本&#xff1a; pycharm工具栏配置&#xff1b; pyqt5也是可以的&#xff1a; 2.2 测试是否配置成功 设置背景颜色&#xff1a; ui收集 qt designer安装 pip ins…

JavaEE-网络初识

文章目录 一、网络背景1.1 起源1.2 国内网络的发展 二、关键概念2.1 网络2.2 设备2.3 ip地址与端口号 三、协议3.1 协议分层3.2 OSI七层模型3.3 TCP/IP五层模型3.4 数据传输过程的简单叙述 一、网络背景 1.1 起源 在国外大概时上世纪70年代左右&#xff0c;网络就出现了&…

U-Mail邮件系统取得多项适配认证,全面支持国产化信创环境

随着信息技术的发展&#xff0c;信息化建设越来越深入到社会各个领域&#xff0c;成为驱动经济社会发展的重要力量。在此背景下&#xff0c;我国正加快构建国家信息安全保障体系&#xff0c;实现自主可控&#xff0c;形成安全可靠的信息技术体系。这正是我们所说的“信创”&…

ssl证书价格一年多少钱?怎么申请?

随着各大平台下架了一年期免费证书&#xff0c;免费证书的有效期都为90天。更多企业选择付费证书。费用是众多用户关心的话题&#xff0c;一年期SSL证书价格在几十到几千元不等。 一年期SSL证书价格查看https://www.joyssl.com/certificate/select/0-1000.html?nid16 下面是…

如何官方查询论文分区,中科院及JCR

中科院分区 有一个小程序&#xff1a;中科院文献情报中心分区表 点2023升级版&#xff0c;输入期刊名 大类1区 JCR分区 进入官方网站 Journal Citation Reports 输入要查询的期刊名&#xff0c;点开 拼命往下拉 这就是根据影响因子的排名&#xff0c;在computer science&am…

农业场景下的slam论文汇总

文章目录 概述2020Ground-Level Mapping and Navigating for Agriculture Based on IoT and Computer VisionCanopy Density Estimation in Perennial Horticulture Crops Using 3D Spinning Lidar SLAM 2021Mobile 3D scan LiDAR: a literature reviewSLAM in the Field: An E…

flutter webview加载本地文件出现跨域解决方案

一直报错 [INFO:CONSOLE(17)] "Access to image at file:///android_asset/flutter_assets/assets/jump/box_bottom.png from origin null has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome…

带你玩转OpenHarmony AI:打造智能语音子系统

简介 AI时代&#xff0c;智者当先&#xff0c;判断一个终端设备是否智能&#xff0c;语音能力是必不可缺的。智能家居、智慧厨房、智能汽车等等&#xff0c;一切衣食住行都在往智能方向发展&#xff0c;那我们该如何在OpenAtom OpenHarmony&#xff08;简称“OpenHarmony”&am…

未来十年,IT行业的无限可能!

未来十年&#xff0c;IT行业的无限可能&#xff01; &#x1f604;生命不息&#xff0c;写作不止 &#x1f525; 继续踏上学习之路&#xff0c;学之分享笔记 &#x1f44a; 总有一天我也能像各位大佬一样 &#x1f3c6; 博客首页 怒放吧德德 To记录领地 &#x1f31d;分享学…

多联机分户计费控制系统

中央空调多联机分户计费控制系统&#xff0c;针对国内常见几种品牌的多联机空调系统实行&#xff0c;远程控制与计费管理。系统采用MQTT网络协议&#xff0c;以订阅/发布模式实行设备感知&#xff0c;实现对室外机、室内机的状态监测、实时故障报警、累计分摊费用的实时数据传导…