【Redis】Redis 高频面试 10 道硬核真题
今天又来分享一个大厂面试翻车实录!粉丝小B冲字节后台开发岗,前面聊项目还顺风顺水,结果面试官话锋一转开始问Redis,10个高频问题抛出来,他答到第3题就卡壳,直接凉凉。
今天咱们就把这10个夺命问题+标准答案整理出来,帮你吃透Redis核心考点,下次面试直接稳过!
一、基础暴击:Redis 为什么这么快?⚡
面试官 :Redis高性能的核心原因是什么?别只说“基于内存”!
小B翻车点 :只答了“数据存在内存里”,被追问其他原因时支支吾吾。
1.1 标准答案
- 纯内存操作:数据读写都在内存完成,避开了磁盘IO的性能瓶颈。
- 单线程架构:避免了多线程的上下文切换和锁竞争开销,执行效率极高。
- IO多路复用:使用
epoll模型处理大量并发连接,能同时监听成千上万个socket。 - 高效数据结构:底层使用跳表、哈希表等结构,保证增删改查的时间复杂度足够低。
二、灵魂拷问:Redis五种基本数据类型,各自的应用场景?📦
面试官 :说说String、Hash、List、Set、Zset的典型用法,别混为一谈!
小B翻车点 :Zset和Set的场景记混,说不出底层实现差异。
2.1 标准答案
| 数据类型 | 典型应用场景 |
|---|---|
| String | 缓存用户信息、计数器、分布式锁 |
| Hash | 存储对象属性,比如商品详情 |
| List | 消息队列、最新消息列表 |
| Set | 抽奖、点赞、共同好友 |
| Zset | 排行榜、延时队列 |
2.2 加分细节
Zset底层是跳表+哈希表,支持范围查询;Set由哈希表实现,保证元素唯一性。
三、夺命追问:Redis 持久化机制 RDB 和 AOF 的区别?💾
面试官 :RDB和AOF怎么选?两者混合持久化是啥?
小B翻车点 :说不清楚AOF重写的作用,不知道混合持久化的优势。
3.1 标准答案
- RDB:定时生成数据快照,优点是恢复速度快,缺点是可能丢失快照后的新数据。
- AOF:记录每一条写命令,优点是数据一致性高,缺点是日志文件持续变大,恢复速度较慢。
- 混合持久化:
Redis 4.0+支持,以RDB作为基础快照,AOF只记录快照之后的增量命令,兼顾恢复速度和数据安全性。
四、进阶拷问:缓存穿透、缓存击穿、缓存雪崩,怎么解决?🌪️
面试官 :这三个问题的区别是什么?各自的解决方案有哪些?
小B翻车点 :混淆缓存击穿和雪崩的概念,解决方案答得不全。
4.1 标准答案
缓存穿透:请求查询不存在的数据,绕过缓存直击数据库。
解决:布隆过滤器拦截无效Key;缓存空值。缓存击穿:热点
Key过期,大量请求同时打向数据库。
解决:热点Key永不过期;增加互斥锁,保证只有一个请求去数据库更新缓存。缓存雪崩:大量
Key在同一时间段同时过期,数据库扛不住瞬时并发。
解决:给Key过期时间增加随机偏移值;部署Redis集群提高可用性;多级缓存兜底。
五、压轴大题:Redis 分布式锁怎么实现?有什么坑?🔐
面试官 :用SETNX实现分布式锁,怎么处理死锁?Redisson比原生命令好在哪?
小B翻车点 :忘记设置过期时间,不知道Redisson的自动续期(看门狗)机制。
5.1 基础实现代码
SET key value NX PX30000# NX:key不存在才设置;PX:设置毫秒级自动过期时间5.2 标准答案
- 解决死锁:必须设置过期时间,防止服务挂掉导致锁永久无法释放。
- Redisson优势:支持自动续期(看门狗机制),避免业务未执行完成锁提前过期;同时支持公平锁、红锁等高级特性。
六、剩余5道高频追问(面试必背清单)📝
6.1 Redis 主从复制的原理?
答:全量复制+增量复制,主节点同步RDB文件给从节点,后续持续使用命令传播同步增量数据。
6.2 Redis 哨兵模式的作用?
答:监控主从节点健康状态,主节点宕机后自动完成故障转移,提升集群可用性。
6.3 Redis Cluster 怎么分片?
答:采用哈希槽机制,一共16384个槽,每个节点负责一部分哈希槽,支持动态扩缩容。
6.4 Redis 为什么不适合存大Value?
答:大Value会占用大量内存、网络传输耗时久,还会阻塞Redis单线程,影响整体吞吐量。
6.5 Redis 过期键的删除策略?
答:惰性删除+定期删除组合策略,平衡内存占用与CPU开销。
七、面试翻车总结💡
小B这次栽跟头,核心问题是知识点零散,没吃透底层原理。Redis是后端面试的必考点,不是单纯背诵几条命令就行,面试官更加看重:理解“为什么这么设计”、“真实业务场景如何落地”。
