下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Redis真实高频面试题(实战向、无模板话术)整套面试题贴合一线互联网公司真实面试节奏,从基础入门、核心原理、缓存痛点、集群架构到线上实战场景,循序渐进,无冗余套话,全部为面试高频提问内容。一、基础认知面试题(初级必问)1.说说你对Redis的理解,它是什么类型的数据库?Redis是一款开源的、基于内存的键值对NoSQL数据库,数据主要存储在内存中,读写速度极快。同时支持持久化落地磁盘,避免断电数据丢失。相比MySQL这类关系型数据库,它不支持复杂事务、联表查询,主打高性能、高并发,多用于缓存、计数器、分布式锁、限流等场景。2.Redis为什么速度这么快?核心有几点:第一,数据全程基于内存操作,没有磁盘IO开销;第二,采用单线程模型处理核心读写命令,避免了多线程的线程竞争、锁开销和上下文切换问题;第三,底层做了大量IO多路复用优化,用少量线程就能处理大量客户端连接;第四,底层数据结构都是高度优化的极简结构,查询和写入效率极高。3.Redis单线程为什么还能支撑高并发?首先要明确,Redis的单线程指的是命令执行线程,网络IO、持久化、集群同步等操作是多线程执行的。命令执行单线程规避了锁竞争、线程切换的消耗,且Redis绝大部分命令都是O(1)、O(logN)的轻量操作,执行速度极快,单线程完全可以支撑十万级QPS。真正的瓶颈不在线程,而在网络带宽和内存大小。4.Redis支持哪些数据类型?日常常用场景分别是什么?基础五种:String、List、Hash、Set、ZSet。String:最常用,缓存用户信息、配置、验证码、计数器、限流计数;Hash:存储结构化数据,比如用户详情、商品信息,比String序列化更省内存、支持单独修改字段;List:有序可重复,做消息队列、文章列表、时间线数据;Set:无序不可重复,用于去重、交集并集计算,比如好友共同关注、点赞用户去重;ZSet:有序不可重复,带分数权重,用于排行榜、延时队列、权重排序场景。扩展类型:Geo(地理位置)、Bitmap(位图签到)、HyperLogLog(海量数据去重统计)、Stream(可靠消息队列)。5.Redis默认端口、默认数据库数量,数据库可以自定义吗?默认端口6379,默认16个数据库,编号0-15。数据库数量可以在配置文件中修改,但生产环境一般不建议多库混用,不同业务建议部署独立Redis实例,避免互相影响、key冲突、故障牵连。二、核心原理与数据结构(中级高频)1.RedisString底层是什么结构?最大存储容量多少?底层是SDS简单动态字符串,不同于C语言原生字符串,支持动态扩容、预分配内存、杜绝缓冲区溢出、记录字符串长度。单个Stringkey最大可以存储512MB数据,日常业务不会用到这么大,大key会导致卡顿、集群分片不均,生产必须规避。2.什么是Redis大key、热key?有什么危害,怎么解决?大key:单个key存储数据过大,比如String超过10KB、集合类型元素过万。危害是删除、过期、迁移时会阻塞主线程,导致Redis卡顿、接口超时。解决方式:大key拆分、精简存储数据、分批删除、避免存储超大序列化数据。热key:某个key被超高并发访问,流量集中在单个Redis节点,导致节点打满、集群失衡。解决方式:本地缓存兜底、key后缀哈希打散、热点数据多副本部署。3.Redis过期键删除策略是什么?采用「惰性删除+定期删除」结合的策略,没有采用实时删除,避免大量过期键同时删除阻塞主线程。惰性删除:key被访问时,判断是否过期,过期则直接删除;定期删除:后台线程定时随机抽取部分过期key清理,减少内存占用;缺点是极端情况下会有大量过期键占用内存,需要配合内存淘汰策略兜底。4.Redis内存淘汰策略有哪些?生产常用哪种?一共8种策略,核心分为三类:1.不淘汰:noeviction,内存满了直接报错,不建议生产使用;2.淘汰所有key:随机淘汰、LRU淘汰、LFU淘汰;3.只淘汰带过期时间的key:随机、LRU、LFU淘汰。生产最常用volatile-lru,优先淘汰带过期时间、最少使用的key,保证常驻核心数据不被误删;新版本优先用volatile-lfu,按访问频率淘汰,精准度更高。5.讲讲Redis的持久化机制,RDB和AOF区别、优缺点Redis支持两种持久化方式,生产一般开启混合持久化。RDB:快照持久化,定时把全量内存数据写入磁盘二进制文件。优点:文件小、恢复速度快、不影响日常读写性能;缺点:会丢失最后一次快照后的增量数据,数据一致性一般。AOF:日志持久化,记录每一条写命令日志。优点:数据几乎不丢失,支持秒级数据恢复;缺点:日志文件大,恢复速度慢,高频写入会有轻微性能损耗。混合持久化:Redis4.0+支持,AOF重写时先写入RDB全量数据,再追加增量AOF日志,兼顾恢复速度和数据安全性。6.AOF三种刷盘策略区别?生产怎么选?always:每次写命令都刷盘,数据绝对安全,性能极差,不用;everysec:每秒刷盘一次,最多丢失1秒数据,性能均衡,生产默认首选;no:交给系统自动刷盘,性能最高,宕机丢失数据多,不推荐。三、缓存经典问题(面试重中之重)1.缓存穿透、缓存击穿、缓存雪崩分别是什么?怎么解决?缓存穿透:查询数据库和缓存都不存在的数据,比如恶意伪造id,请求直接打穿到数据库,压垮DB。解决:接口参数校验、空值缓存、布隆过滤器拦截非法key。缓存击穿:某个热点key过期瞬间,大量并发请求同时打向数据库。解决:热点key永不过期、加分布式锁、互斥锁限流、过期时间随机偏移。缓存雪崩:大量key同时过期,或Redis集群宕机,所有请求全部访问数据库,导致数据库崩盘。解决:过期时间加随机值、搭建Redis高可用集群、多级缓存、服务熔断降级、限流。2.缓存和数据库双写一致性问题怎么解决?没有绝对完美的方案,根据业务场景选择:1.普通低并发业务:更新数据库、删除缓存,简单高效,满足绝大多数场景;2.高并发一致性要求高:延迟双删,先删缓存、更新数据库、延迟几秒再删一次缓存,解决并发读写不一致问题;3.强一致性业务:放弃缓存,直接查库,或采用canal监听binlog异步更新缓存;同时禁止更新缓存,只删缓存,避免并发更新覆盖数据。3.为什么不建议直接更新缓存?高并发场景下,会出现读写顺序错乱,后更新数据库的线程先更新缓存,先更新数据库的线程后更新缓存,导致缓存数据是旧数据,出现数据永久不一致。删除缓存可以规避这个并发问题。四、高可用与集群架构(中高级面试)1.Redis主从复制原理是什么?分为全量同步和增量同步。首次建立主从关系时,主节点执行bgsave生成RDB快照,发送给从节点,从节点加载快照完成全量同步;同步期间主节点新写入的命令会缓存,同步完成后增量回放。后续主节点持续同步增量命令,保证主从数据一致。2.主从复制会有什么问题?存在数据延迟,主从同步有短暂时间差,高并发下会出现读写不一致;主节点宕机后无法自动切换,需要手动运维,不具备高可用能力,所以需要搭配哨兵模式。3.Redis哨兵模式作用和原理?哨兵核心作用:监控主从节点、自动故障转移、通知客户端最新主节点地址。多个哨兵节点互相监控,定期心跳检测主节点状态,主观下线后,多个哨兵确认客观下线,自动投票选举新主节点,将从节点升级为主节点,其他从节点切换新主节点同步数据,实现故障自动恢复。4.RedisCluster集群原理?哈希槽机制是什么?Redis集群采用分片机制,无中心节点,默认16384个哈希槽,根据key的CRC16算法取模,分配到不同主节点。每个主节点负责一部分槽位,从节点负责备份。集群支持水平扩容、分片存储,解决单节点内存和并发瓶颈。哈希槽和一致性哈希不同,槽位固定,扩容只需迁移对应槽位数据,无需迁移全部数据,扩容更高效。5.Redis集群为什么是16384个槽位?槽位太少,集群节点分配不均,分片粒度太粗;槽位太多,集群心跳同步的槽位信息占用带宽过高,浪费资源。16384是官方权衡带宽、分片粒度、扩容效率后的最优值。6.Redis集群能否保证强一致性?不能,Redis集群是最终一致性。主节点写入成功立即返回,异步同步到从节点,如果主节点写入成功后立刻宕机,数据还没同步到从节点,故障转移后新主节点会丢失这部分数据。强一致性场景不建议用Redis集群。五、实战场景与问题排查(高阶面试)1.Redis为什么会产生阻塞?线上卡顿怎么排查?常见阻塞原因:大key操作、大量过期键集中删除、fork子进程持久化耗时、网络问题、慢命令(keys、flushall、hgetall等)。排查思路:查看慢日志、监控内存波动、排查大key、检查持久化日志、查看集群节点状态、统计高频慢命令。生产禁止线上使用keys、flushall高危命令。2.Redis分布式锁实现原理?有什么缺陷,怎么优化?基础实现:setkeyvaluenxex过期时间,保证加锁原子性。存在问题:锁过期释放导致并发问题、业务超时锁误删、主从异步同步锁失效。优化方案:使用Redisson实现可重入锁、看门狗续期、防误删、公平锁、读写锁,解决原生锁的各类缺陷。3.Redisson看门狗原理是什么?客户端加锁成功后,后台开启定时线程,每隔10秒检查锁状态,如果业务未执行完毕,自动延长锁过期时间,避免业务没执行完、锁提前过期释放的问题,业务执行完成后主动关闭续期线程。4.Redis适合做什么?不适合做什么?适合:热点数据缓存、计数器、限流、分布式锁、排行榜
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年肾炎脾肿大症状解析模拟题及答案详解
- 2026年登高安全模拟试题(含答案)
- 2026年电工学简答模拟试题(含答案)
- 2026年蓝色素质模拟题及答案详解
- 2026年四川省选调生行测模拟题及答案详解
- 翻罐工安全强化竞赛考核试卷含答案
- 2026年古诗细节描写模拟试题(含答案)
- 2026年海边侦探模拟试题(含答案)
- 2026年河南十大战略模拟试卷(含答案)
- 时间频率计量员安全生产规范考核试卷含答案
- 军品生产现场管理制度
- 2026年辽宁铁道单招测试题附答案
- 汽车吊装作业风险识别与管控
- 中国急性缺血性脑卒中诊疗指南(2025年)
- 离退休老干部专题党课筑思想防线葆党员本色
- 读后续写题型讲解课件-高中英语人教版第一册
- 铁路防断培训课件
- 反对本本主义解读课件
- 公司融资风险管理制度
- 麻醉睡眠治疗
- 《步辇图》美术鉴赏课件
评论
0/150
提交评论