版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Redis高频面试题及详细实战答案(工程真实面试版)前言:这份总结全部基于一线后端真实面试场景编写,答案偏向实际工作落地,不堆砌教科书废话,适合求职、复试、技术复盘背诵。一、Redis基础认知面试题1、简单说下你对Redis的理解,它是什么、主要作用是什么?参考答案:Redis是一款高性能的内存key-value数据库,日常工作里我们主要把它当缓存、中间件来用。绝大部分数据跑在内存里,读写速度非常快,支持多种数据结构,不止能存简单字符串。业务里最常用的场景主要有几个:热点数据缓存、接口限流、分布式锁、会话共享、计数器、排行榜、延迟队列等。相比MySQL这种磁盘数据库,它的优势就是高并发、低延迟,适合扛高QPS的场景。2、Redis为什么速度这么快?参考答案:第一,它的数据主要存在内存,内存读写本身就比磁盘快几个量级,没有磁盘寻道、IO等待开销。第二,采用单线程模型处理核心命令,避免了多线程的锁竞争、线程切换开销,逻辑简单、执行高效。这里要说明一下,新版本Redis只是命令单线程,持久化、异步任务是多线程跑的,不会卡主线程。第三,底层做了很多IO优化,用的是多路复用模型,能同时处理大量客户端连接,资源利用率很高。第四,数据结构底层封装非常精简,所有操作都是轻量化操作,没有多余冗余逻辑。3、Redis单线程为什么还能支持高并发?参考答案:很多人误以为单线程就是慢,其实不是。Redis的瓶颈从来不在CPU,而是在网络和内存带宽。单线程最大的好处是无锁、无竞争、上下文切换少,执行每条命令都非常顺畅。再加上多路复用可以批量监听大量socket请求,单线程完全可以支撑十万级QPS。只有在做大量持久化、大key运算的时候,才可能出现主线程阻塞。二、Redis数据结构高频面试4、Redis有哪些常用数据结构?各自的使用场景?参考答案:String字符串:最基础结构,做缓存、计数器、分布式自增ID、用户信息缓存、限流计数。Hash哈希:适合存结构化数据,比如用户详情、商品信息、订单简要数据,比单独创建多个String更省内存,更新字段更灵活。List列表:有序可重复,底层是双向链表,适合做简单消息队列、任务队列、时间线、浏览记录。Set集合:无序不可重复,适合做去重、交集、并集、差集,比如共同好友、标签去重、抽奖去重。ZSet有序集合:带权重排序,适合各种排行榜、延时任务、带分数排序的业务场景。5、简单说下RedisString的底层结构?为什么能存整数、字符串、二进制?参考答案:RedisString底层是SDS简单动态字符串,不是C原生字符串。优势很明显:带长度记录,获取长度不用遍历;杜绝缓冲区溢出;支持动态扩容缩容;二进制安全,不管存文本、数字、字节流都没问题。并且会做编码优化,整数会直接存整型,短小字符串压缩存储,节省内存。6、什么是大Key?大Key有什么危害?怎么处理?参考答案:一般我们把value过大、元素过多的key叫大Key,比如String超过10KB,Hash、List、ZSet元素过万。危害:1、读写耗时高,单线程会被卡住,阻塞后续命令,导致整体接口延迟升高;2、集群分片不均衡,造成部分节点内存过高、压力过大;3、过期删除、主动删除时容易产生卡顿,引发瞬间抖动。解决方案:拆分key,把大key拆成多个小key;控制单个集合元素数量;不存超大冗余数据;定时清理无效数据;使用分片存储。三、Redis过期与淘汰策略(必考)7、Rediskey过期删除策略有几种?分别是什么?参考答案:一共有三种,是配合使用的,不是单独一种:惰性删除:key过期不立刻删,等下次访问时再判断过期并删除。优点是不占用CPU,缺点是过期垃圾数据可能一直占内存。定期删除:每隔一段时间随机抽取一部分key检查过期并删除。平衡了压力和内存清理力度,但无法删干净所有过期key。主动淘汰:内存满了之后触发内存淘汰策略,主动清理数据。8、Redis内存淘汰策略有哪些?工作中常用哪种?参考答案:一共8种,工作里我们实际只用两种最多:volatile-lru:只淘汰带过期时间的key,优先删最近最少使用的,业务最常用,不会删掉永久有效数据。allkeys-lru:所有key都参与淘汰,优先删最少使用的,适合纯缓存场景。其余策略比如随机淘汰、TTL优先淘汰、不淘汰等,基本线上不会用。四、持久化机制(面试高频重点)9、RedisRDB和AOF区别?各自优缺点?线上怎么搭配使用?参考答案:RDB快照持久化:定时把全量内存数据生成二进制快照文件。优点:文件小、恢复速度快、不频繁消耗IO;缺点:会丢最后一次快照到宕机之间的数据,实时性差。AOF日志持久化:把每一条写命令追加记录到日志文件。优点:数据安全性高,最多丢秒级数据;缺点:文件体积大,恢复慢,持续有IO开销。线上最佳实践:RDB+AOF同时开启。平时靠AOF保证数据不丢,重启恢复优先用RDB快速恢复,再用AOF补增量数据,兼顾速度和安全性。10、AOF重写机制了解吗?为什么需要重写?参考答案:AOF会持续追加命令,时间久了文件会非常大,里面有大量无效、重复、可合并的命令,比如多次修改同一个key。重写就是Redis后台新开进程,根据当前内存数据,重新生成一份最简命令日志,替换旧的大文件,达到压缩文件、精简日志的目的,不会影响主线程正常读写。五、缓存经典三大问题(面试必考压轴)11、什么是缓存穿透?怎么解决?参考答案:缓存穿透就是请求查的是根本不存在的数据,缓存查不到,全部打到数据库。恶意用户可以批量刷不存在key,压垮数据库。解决办法:1、空值缓存,查询为空也缓存一个短期空值,避免频繁穿透;2、布隆过滤器,提前拦截不存在的key;3、接口限流、参数校验,拦截非法请求。12、什么是缓存击穿?怎么解决?参考答案:缓存击穿是热点key突然过期,瞬间大量并发请求同时落到数据库,瞬间打崩DB。解决办法:1、热点key设置永不过期;2、加互斥锁,单线程更新缓存,其他线程等待;3、缓存预热、后台定时主动刷新热点缓存。13、什么是缓存雪崩?怎么解决?参考答案:缓存雪崩是大量key同时过期,或者Redis整体宕机,导致所有流量全部压到数据库,直接引发数据库崩溃。解决办法:1、过期时间加随机偏移量,避免批量同时过期;2、搭建Redis高可用集群,主从+哨兵,避免单点挂掉;3、接口限流、熔断降级,即使缓存崩了,业务也不会全线挂掉;4、做多级缓存,本地缓存+Redis缓存双重兜底。六、Redis分布式锁面试题14、Redis分布式锁怎么实现?有什么问题?怎么优化?参考答案:基础实现:用setnx抢锁,加上过期时间,防止死锁。基础版本存在几个问题:1、业务执行超时,锁自动过期,导致提前释放,出现并发问题;2、谁加锁谁释放的问题,可能被其他线程误删;3、单机Redis锁不安全。优化方案就是Redisson:1、加锁时存入唯一ID,删锁先校验ID,保证只能自己删;2、看门狗机制,业务没执行完,自动续期锁时间,防止提前过期;3、可重入、可等待、可公平锁,适配复杂业务。15、Redis分布式锁能完全保证绝对安全吗?参考答案:不能。Redis锁是最终一致性、高可用锁,不是严格意义上的强一致性锁。极端场景下,主从异步复制延迟,主节点宕机,从节点没同步到锁数据,会出现锁失效。如果是金融、支付这类绝对不能出错的场景,必须用Zookeeper锁或数据库锁,普通业务场景Redisson完全够用。七、Redis高可用(主从、哨兵、集群)16、Redis主从复制原理?参考答案:主节点负责写,从节点负责读,读写分离。第一次同步会做全量同步,主节点生成RDB发送给从节点,从节点加载数据。同步期间的新命令会存在缓冲区,同步结束后补发增量命令。后续正常运行都是增量同步,主节点持续把写命令同步给从节点,保证数据一致。17、哨兵机制的作用是什么?参考答案:哨兵主要负责三件事:监控、通知、自动故障转移。实时监控主从节点状态,如果主节点宕机,哨兵集群通过投票机制,自动把健康的从节点提升为新主节点,修改集群配置,保证服务不中断。解决了主从架构单点故障、无法自动切换的问题。18、Redis集群原理?为什么需要集群?参考答案:单节点Redis有内存上限、并发上限,无法海量存储,也不够稳定。集群采用分片机制,把数据分到16384个槽位,不同节点负责不同槽位数据,实现数据分片存储。集群可以横向扩容,提高并发能力、突破内存限制,同时搭配主从保证高可用。客户端根据key哈希算槽位,直接定位对应节点,性能很高。八、线上问题与实战优化(高阶面试)19、Redis线上变慢、CPU升高,一般是什么原因?怎么排查?参考答案:常见原因:1、存在大key、热key,单次操作耗时过长,阻塞主线程;2、批量操作、keys、flushall这类高危命令线上被执行;3、持久化fork耗时、AOF重写频繁,抢占资源;4、网络抖动、连接数过多、客户端超时堆积。排查方式:看慢日志、监控
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 混凝土浇筑振捣工艺手册
- 技能掌握度KPI考核表
- 互联网技术部软件工程师项目交付效率绩效考核表
- 2026年新办公楼入驻时间确认函7篇范文
- 招标代理服务方案(技术标)
- 自动化测试流程标准化操作手册
- 影视制作公司制片人项目进度管理KPI考核表
- 办公室员工情绪管理提升团队和谐指南
- 环保行业项目工程师项目执行及技术创新绩效考评表
- 人力资源配置与员工发展绩效评估表
- GB/T 19866-2026焊接工艺规程及评定的一般原则
- 2026年旋挖钻机操作手安全教育试卷及答案
- 第三单元《多边形的面积》单元测试卷(含答案)2026-2027学年苏教版五年级数学上册
- 消能减震阻尼器安装施工方案及技术措施
- 2026年国企固定资产投资项目管理程序题库
- 陕西省宝鸡市2026届高考模拟检测试题(二)地理试题(含答案)
- 2026年时事政治测试题库100道附完整答案【考点梳理】
- 办理食品经营许可证的食品安全管理制度目录
- 孕早期保健知识教学课件
- 骨科常用药物相关知识
- 无人机植保培训合同7篇
评论
0/150
提交评论