版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Redis经典面试题及答案(真实面试版)一、Redis基础认知面试题1、简单说下Redis是什么,有什么特点?Redis是一款开源的、基于内存的键值对非关系型数据库,常被用作缓存、消息队列、分布式锁、计数器等场景。核心特点:纯内存操作,读写速度极快,性能优异;支持多种数据结构,不止简单的key-value,适配各类业务场景;支持数据持久化,可将内存数据落地磁盘,防止数据丢失;支持主从复制、哨兵、集群架构,可实现高可用和横向扩容;单线程模型(主线程),避免多线程竞争锁开销,并发性能稳定;支持过期删除、事务、管道、Lua脚本等实用功能。2、Redis为什么速度这么快?主要有几个核心原因:纯内存操作:所有数据读写都在内存中完成,避开了磁盘IO的慢速瓶颈;单线程模型:核心读写逻辑单线程执行,没有线程切换、锁竞争的开销,执行效率高;IO多路复用:采用epoll模型,单线程可以高效监听大量客户端连接,不会阻塞;数据结构高效:底层封装了精简的高效数据结构,读写时间复杂度极低;精简的编码设计:对不同数据类型做了优化编码,节省内存、提升读写效率。3、Redis支持哪些常用数据类型?各自适用场景?日常开发最常用5种基础类型,外加几种特殊类型:String(字符串):最基础类型,支持字符串、数字、二进制数据。适用场景:用户信息缓存、计数器、分布式ID、限流计数、热点数据缓存。List(列表):有序可重复的字符串列表,底层是双向链表。适用场景:消息队列、时间线记录、日志列表、排队列表。Set(集合):无序、不可重复。适用场景:去重、交集并集差集计算、好友列表、点赞用户统计。Hash(哈希):key-value嵌套结构,一个key对应多个字段。适用场景:存储对象数据,如用户详情、商品信息,比单独String更省内存、更新更灵活。ZSet(有序集合):不可重复、自带权重排序。适用场景:排行榜、延时队列、带权重的有序数据。特殊类型:Bitmap(位图,用于签到、状态标记)、HyperLogLog(海量数据去重统计)、Stream(专业消息队列)、Geo(地理位置计算)。4、Redis单线程为什么还能支撑高并发?这里的单线程指处理客户端读写命令的主线程是单线程,并非整个Redis只有一个线程。支撑高并发的核心:内存操作本身速度极快,单线程的处理能力足以支撑十万级QPS;IO多路复用可以同时监听海量连接,不会因为客户端多而阻塞;避免了多线程的锁竞争、线程切换、上下文切换开销,执行效率更高;Redis后台有独立线程处理持久化、关闭文件、异步释放内存等耗时操作,不影响主线程读写。二、Redis持久化面试题1、Redis两种持久化方式?区别是什么?Redis提供RDB和AOF两种持久化机制,可单独开启也可同时开启。RDB(快照持久化)按照配置的时间周期,定期将内存中全量数据生成二进制快照文件保存到磁盘。执行时会fork子进程完成快照写入,不阻塞主线程。优点:文件体积小、恢复速度快、适合冷备份;缺点:会丢失最后一次快照到宕机前的增量数据,数据完整性一般。AOF(日志持久化)以日志形式,记录每一条写操作命令,重启时重放日志恢复数据,实时性更高。优点:数据丢失极少,最多丢失一秒内数据,安全性高;支持日志重写,压缩日志体积;缺点:日志文件体积大,数据恢复速度比RDB慢。2、生产环境一般怎么配置持久化?主流方案:RDB+AOF同时开启。兼顾数据安全和恢复效率:平时依靠AOF保证数据不丢失,RDB做定时全量备份;重启优先用RDB快速恢复基础数据,再用AOF补全增量数据。纯缓存场景(数据可重建)可以关闭所有持久化,提升性能。3、AOF三种刷盘策略区别?always:每写一条命令立刻刷盘,数据零丢失,但是IO频繁,性能最差;everysec(默认):每秒批量刷盘一次,最多丢失1秒数据,性能和安全性平衡,生产首选;no:交由操作系统自主刷盘,性能最高,但丢失数据风险最大。三、Redis缓存经典问题(高频面试)1、什么是缓存穿透、缓存击穿、缓存雪崩?怎么解决?(1)缓存穿透场景:查询数据库和缓存都不存在的数据,比如恶意伪造无效key,请求直接打到数据库,压垮数据库。解决方案:空值缓存:查询为空时,缓存空数据,设置较短过期时间;布隆过滤器:提前过滤不存在的key,拦截无效请求;接口校验、限流,拦截恶意请求。(2)缓存击穿场景:热点key过期瞬间,大量并发请求同时打到数据库,瞬间压垮库。解决方案:热点key永不过期;加互斥锁(分布式锁),保证同一时间只有一个请求查库更新缓存;缓存预热,提前更新热点数据。(3)缓存雪崩场景:大量缓存key同时过期,或Redis集群宕机,所有请求全部直达数据库,引发数据库雪崩。解决方案:过期时间加随机偏移量,避免批量key同时失效;搭建Redis高可用架构(主从+哨兵/集群),避免单点宕机;服务层加限流、熔断、降级机制;做多级缓存(本地缓存+Redis缓存)。2、Redis缓存和数据库一致性怎么保证?日常业务没有绝对的强一致,根据业务场景选择方案:普通业务(最终一致即可):更新数据库后,删除缓存,下次查询自动回写最新数据,比更新缓存更稳妥,避免脏数据;高一致性业务:采用延时双删策略,先删缓存、更新数据库、延迟一段时间再删一次缓存,解决并发读写导致的脏数据;极高一致场景:放弃缓存,直接操作数据库;或通过消息队列异步同步缓存,配合事务保证数据可靠。核心原则:尽量删缓存,不要频繁更新缓存,减少无效更新和并发冲突。四、Redis过期与内存淘汰1、Redis过期key的删除策略?三种策略配合使用:定时删除:创建key时设置定时器,到期立即删除,占用CPU资源高,基本不用;惰性删除:key到期后不立即删,下次访问时检测过期并删除,节省CPU,但会堆积过期无效key;定期删除:后台线程定时随机抽取部分过期key删除,清理堆积数据,平衡CPU和内存占用。Redis默认采用:惰性删除+定期删除组合策略。2、Redis内存淘汰策略有哪些?生产用哪个?Redis内存满后,会根据配置策略淘汰key,共8种,核心常用4种:allkeys-lru:从所有key中淘汰最近最少使用的key(生产最常用);volatile-lru:只从带过期时间的key中淘汰最近最少使用的;allkeys-random:随机淘汰任意key;volatile-ttl:优先淘汰即将过期的key;noeviction:默认策略,内存满后直接报错,不淘汰任何数据。生产推荐allkeys-lru,最大化利用内存,保留热点数据,淘汰冷数据。五、Redis高可用架构1、Redis主从复制原理?主节点负责读写,从节点同步主节点数据,只提供读服务,分担读压力。复制流程:从节点首次连接主节点,执行全量复制:主节点生成RDB快照发送给从节点,同时缓存期间的写命令;从节点加载RDB文件完成初始化,主节点推送缓存的增量命令,同步数据;后续持续增量复制,主节点实时同步写命令到从节点,保持数据一致。缺点:主节点故障后无法自动切换,需要手动运维操作。2、哨兵机制的作用?哨兵是独立的监控进程,基于主从架构实现自动高可用。核心功能:监控:实时监控主从节点健康状态;通知:节点异常时推送告警信息;自动故障转移:主节点宕机后,哨兵投票选出新主节点,自动切换主从关系,客户端无需手动修改配置。适用中小型项目,满足高可用需求,不支持海量数据分片扩容。3、Redis集群原理?解决什么问题?RedisCluster集群是分布式分片架构,解决单节点内存上限、单机并发上限、无法横向扩容的问题。核心原理:集群共16384个哈希槽,所有key通过CRC16算法计算哈希值,分配到对应槽位;多个主节点平分哈希槽,各自负责一部分数据,实现数据分片存储;每个主节点搭配从节点,保证单节点故障不影响整体集群可用;支持在线扩容、缩容,无需停机。适用大数据量、高并发、需要横向扩容的大型业务场景。六、Redis分布式锁(超高频)1、Redis分布式锁怎么实现?核心要点?基于SETkeyvalueNXEX命令实现,是生产标准方案。核心逻辑:NX:key不存在才创建,保证互斥性;EX:设置自动过期时间,防止服务宕机导致锁死;value存唯一标识(UUID),防止误删别人的锁;解锁必须通过Lua脚本:先判断value是否匹配,匹配再删除,保证原子性。2、分布式锁存在的问题及优化方案?锁过期但业务未执行完:通过续命机制解决(定时任务检测锁是否有效,延长过期时间);主从同步延迟导致锁失效:主节点加锁成功,未同步到从节点就宕机,从节点升级后主锁丢失。极致严谨场景使用Redlock方案,普通业务可忽略该极端场景;误删锁:通过唯一value+Lua原子解锁彻底解决。七、Redis实战踩坑题1、Redis为什么不适合存储大key?有什么问题?大key指value过大或集合元素过多的key,会引发诸多问题:读写大key耗时过长,阻塞主线程,导致Redis卡顿、响应超时;集群迁移、扩容时,大key迁移缓慢,引发集群卡顿;内存占用过高,导致内存淘汰频繁、OOM风险增加;网络传输数据量大,带宽占用高,接口响应慢。解决:拆分大key、精简存储数据、
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电信公司技术支持专员工作绩效考评表
- 网络安全工程师技术能力与问题解决绩效评估表
- 关于调整2026年货款支付计划的通知函3篇
- 企业并购尽职调查报告函8篇范文
- 房地产销售团队服务规范及成交指标绩效考核表
- 市场拓展专员效果评价表
- 建筑师项目执行与设计思维绩效衡量表
- 2026年城市管理局事业单位环卫工人技能试卷
- 2026年大学计算机科学与技术基础培训试卷
- 2026年中小学教师招聘综合知识专项训练试题
- 北京市某中学2025-2026学年八年级上学期期中考试物理试卷(含答案)
- 司机放弃社保协议书
- 临床试验SAE的管理
- 传承龙江四大精神
- 2025年工业机器人远程调试服务合同协议
- 公路工程安全隐患排查与整改清单
- (一模)2025学年第一学期杭州市2026届高三年级教学质量检测 英语试卷(含标准答案)
- 收费站冬防安全知识培训课件
- 地质钻探安全培训内容课件
- 南阳同位素医药中心项目环境影响报告表
- 气道异物梗阻急救方法
评论
0/150
提交评论