RedisRedis缓存后端开发面试真题

Redis面试题与八股文汇总:230+ 道数据结构、持久化、缓存三大问题、一致性、分布式锁、高可用高频真题分类整理(2026 面经)

面灵AI整理的 Redis 八股合集,覆盖数据结构、线程模型、RDB 与 AOF、过期淘汰、缓存穿透击穿雪崩、缓存一致性、分布式锁、主从哨兵集群与 LRU 手撕,标注近期出题的大厂。

收录题目
236 道
统计周期
截至 2026 年 10 月
近期出题公司字节跳动在招腾讯在招阿里巴巴美团在招京东在招快手华为百度小米哔哩哔哩
面灵AI
23 分钟阅读

Redis 是后端岗面试里仅次于 MySQL 的第二个必考点,而且和它的关系非常紧:MySQL 管数据存得下、查得准,Redis 管数据读得快、扛得住。问法也很固定,从"Redis 为什么快"开头,顺着数据结构、持久化、过期淘汰一路问到缓存穿透、击穿、雪崩,再落到缓存和数据库怎么保持一致、分布式锁怎么写才不会出事。字节、腾讯、美团、京东、快手换了部门,开头的问题几乎没变,变的是追问到第几层。

这份合集从公开面经里把 Redis 方向反复出现的八股题抽出来重新归类,一共 236 道题,分十一个主题。它只收 Redis 本身以及紧挨着的缓存设计、布隆过滤器、分布式锁、LRU 手撕;MySQL 的索引、事务和锁请对照 MySQL 面试题合集,后端岗的完整高频清单可以看后端开发高频面试题榜单,C++ 与 Python 方向分别有 C++ 面试题合集 和 Python 面试题合集。

怎么用这份题单:

  • 题目后面括号里是近期实际问过这道题的大厂,不代表完整名单,也不代表没标注的公司不问
  • Redis 八股的追问是一条链:数据结构 → 为什么快 → 持久化 → 缓存三大问题 → 一致性 → 分布式锁。只背其中一个结论,面试官往下追一层就会卡住
  • 缓存三大问题、缓存与数据库一致性、分布式锁、持久化这四块是几乎所有后端岗的公共必考区,时间不够就先把它们吃透

主题导航:Redis 基础与应用场景 · 数据类型与底层数据结构 · 线程模型与高性能 · 持久化:RDB、AOF 与混合持久化 · 过期策略与内存淘汰 · 缓存穿透、击穿、雪崩与布隆过滤器 · 缓存与数据库一致性 · 分布式锁与 Redisson · 主从复制、哨兵与集群 · 大 Key、热 Key、事务与典型应用 · 缓存算法与手撕题

Redis 基础与应用场景

  • 介绍一下Redis(字节跳动 / 京东 / 快手)
  • Redis 为什么适合做缓存?
  • 为什么使用 Redis 作为缓存?(字节跳动 / 京东 / 快手)
  • Redis 的优点是什么?(美团 / 滴滴 / 小红书)
  • redis和memcache的区别(字节跳动 / 腾讯 / 美团)
  • 本地缓存与redis缓存区别(字节跳动 / 快手 / 华为)
  • Redis 和 MySQL 有什么区别,分别适用什么场景?
  • Redis 在项目中有哪些常见使用场景?(京东)
  • Redis 除了缓存还能用于哪些场景?(字节跳动 / 快手 / 哔哩哔哩)
  • 项目中如何使用 Redis,为什么选择 Redis?(美团 / 京东 / 百度)
  • 什么时候要考虑使用Redis(字节跳动 / 美团 / 滴滴)
  • 为什么不用redis(字节跳动 / 腾讯 / 京东)
  • Redis 通常用来做什么?(字节跳动 / 京东 / 快手)
  • Redis 排行榜如何实现?(字节跳动 / 京东 / 拼多多)
  • Redis中点赞数据适合用什么数据结构存储?(字节跳动 / 腾讯)
  • Redis 做缓存时如果 Redis 挂了怎么办?(字节跳动 / 京东 / 百度)
  • Redis 常用接口和命令有哪些?(字节跳动 / 腾讯 / 快手)
  • Redis 的 key 应该怎么命名,有哪些规范?
  • Redis 的 keys 命令为什么不能在线上用,应该用什么代替?
  • Redis 5.0、6.0、7.0 各自带来了哪些重要特性?
  • Redis 和 Pika、Dragonfly 这类兼容实现有什么区别?
  • Redis 可以当数据库用吗,什么情况下不适合?
  • Redis 如何做数据预热?
  • Redis 的 SCAN 命令是怎么工作的,为什么可能返回重复 key?
面灵AI 面试助手

面试官问「缓存穿透、缓存击穿、缓存雪崩分别是什么?怎么解决?」,看浮窗当场给你什么

面试官一开口,浮窗就出要点和能直接念的回答,被追问也接得住。共享屏幕时对面看不见。

腾讯会议文件编辑显示周一 14:32
腾讯会议 · 后端开发工程师 · 技术一面REC 00:10
面
面试官
我
面试官:
聆听中18:05
Ctrl+↑回看
Ctrl+↓看新
拖动分割线看面试官那一侧:共享屏幕、窗口录制、截图里都不会出现答案层
浮窗里这道题的回答

核心要点 穿透是查不存在的数据、击穿是单个热 key 过期、雪崩是大量 key 同时过期或 Redis 宕机、空值缓存和布隆过滤器、互斥锁和逻辑过期、过期时间加随机值、限流降级

参考回答 三个问题的区别在谁没命中缓存。穿透是查询根本不存在的数据,每次都打到数据库,用缓存空值或布隆过滤器拦住;击穿是某一个热点 key 过期的瞬间,大量请求同时打到数据库,用互斥锁重建缓存,或者逻辑过期让旧值继续对外服务;雪崩是大量 key 同一时间过期,或者 Redis 整体不可用,过期时间加随机偏移,再配合多级缓存、限流和降级,Redis 集群部署保证可用性。

数据类型与底层数据结构

  • Redis 的数据结构有哪些?
  • Redis 常用数据类型有哪些?分别适用什么场景?(京东 / 华为)
  • Redis数据类型的底层数据结构(京东 / 华为 / 哔哩哔哩)
  • Redis 的 String 底层使用什么数据结构实现?(字节跳动 / 京东 / 快手)
  • Redis的string底层,跟java的string区别(字节跳动 / 美团 / 百度)
  • Redis 的 Hash 数据结构是如何实现的?(字节跳动 / 美团 / 百度)
  • Redis的Hash如何解决hash冲突(字节跳动 / 腾讯 / 网易)
  • Redis的Hash底层结构、扩容过程(字节跳动 / 快手 / 滴滴)
  • Redis 的渐进式 rehash 是如何实现的?(字节跳动 / 腾讯 / 美团)
  • Redis 的 List 底层是怎么实现的?
  • Redis Set 的底层存储结构是什么?(字节跳动 / 腾讯 / 京东)
  • Redis ZSet 的底层实现原理是什么?(字节跳动 / 京东 / 小米)
  • Redis ZSet 底层数据结构是什么,ziplist 和 listpack 有什么区别?(字节跳动 / 腾讯 / 美团)
  • Redis ZSet 和 Set 有什么区别?(字节跳动 / 京东 / 华为)
  • Redis zset讲下 排序依据(京东 / 快手 / 百度)
  • Redis ZSet通常用来做什么?(字节跳动 / 腾讯 / 京东)
  • 跳表原理是什么?(京东 / 哔哩哔哩)
  • Redis跳表的时间复杂度是多少?(字节跳动 / 腾讯 / 美团)
  • 跳表插入一个元素是怎么插入的(腾讯 / 美团)
  • Redis的zset为什么用跳表而不是红黑树(字节跳动 / 哔哩哔哩 / 小红书)
  • 了解zset吗?为什么底层使用跳表而不是B+树?(字节跳动 / 腾讯 / 美团)
  • Redis 的 SDS 相比 C 语言字符串有什么优势?
  • Redis 的 Bitmap、HyperLogLog、GEO 分别是什么,适合什么场景?
  • Redis GEO 的底层原理和使用方式是什么?(字节跳动 / 美团 / 京东)
  • Redis 的 Stream 是什么,和 List 做消息队列有什么区别?
  • Redis 对象的编码方式(encoding)有哪些,什么时候会转换?
  • Redis 的 intset、listpack、quicklist 分别用在哪里?
  • Redis 的 key 底层是怎么存储的,全局哈希表怎么设计?
  • Bitmap 如何实现用户签到和统计连续签到天数?
  • HyperLogLog 为什么能用很小的内存统计 UV,误差是多少?
  • Redis 的 String 最大能存多大?

线程模型与高性能

  • Redis为什么这么快?(京东 / 华为)
  • Redis 是多线程吗?(字节跳动 / 京东 / 华为)
  • Redis 为什么单线程处理命令仍然很快?(字节跳动 / 京东 / 快手)
  • Redis作者为什么不用多线程?为什么redis6又加了多线程?(腾讯 / 美团 / 快手)
  • 什么是redis的I/O多路复用?(字节跳动 / 腾讯 / 美团)
  • Redis的线程模型有了解过吗?单线程为什么效率高(字节跳动 / 美团 / 京东)
  • Redis的网络模型(字节跳动 / 美团 / 京东)
  • Redis单线程怎么处理高并发请求?(字节跳动 / 美团 / 百度)
  • Redis 为什么比传统关系型数据库快?(字节跳动 / 快手 / 拼多多)
  • Redis如何保证操作的原子性?(字节跳动 / 百度 / 滴滴)
  • Redis 的过期键删除和 fork 会不会阻塞主线程?
  • select、poll、epoll 有什么区别,Redis 用的是哪个?
  • Redis 6.0 的多线程具体处理的是哪一部分?
  • Redis 命令执行慢会带来什么影响,怎么排查慢查询?
  • Redis 的 pipeline 是什么,和事务有什么区别?
  • Redis 的 Reactor 模型是怎么组织事件循环的?
  • Redis 内存碎片率是什么,怎么处理?

持久化:RDB、AOF 与混合持久化

  • redis持久化的方法(京东 / 华为)
  • Redis 持久化方式有哪些?RDB 和 AOF 有什么区别?(京东)
  • 介绍一下 Redis 的持久化机制以及优缺点,各自适用什么场景(字节跳动 / 快手 / 华为)
  • Redis AOF和RDB的实现原理(字节跳动 / 京东 / 快手)
  • Redis的持久化、混合持久化机制是什么?(字节跳动 / 腾讯 / 美团)
  • Redis的持久化策略有哪些?为什么两个都用?(字节跳动 / 腾讯)
  • RDB和AOF一般都用到什么场景下(字节跳动 / 腾讯 / 美团)
  • Redis 丢数据怎么办?(字节跳动 / 京东 / 快手)
  • Redis落盘方式有哪些(腾讯 / 美团)
  • AOF和RDB都是什么样子的(字节跳动 / 腾讯 / 美团)
  • RDB 生成快照时是怎么做到不阻塞主线程的(fork 与写时复制)?
  • AOF 的三种刷盘策略 always、everysec、no 有什么区别?
  • AOF 重写是什么,为什么需要,重写期间新写入的命令怎么处理?
  • Redis 重启时会优先加载 RDB 还是 AOF?
  • bgsave 和 save 有什么区别?
  • fork 子进程时内存占用和延迟突增怎么优化?

过期策略与内存淘汰

  • Redis过期策略(字节跳动 / 京东 / 小米)
  • Redis 的过期机制是怎么实现的?(字节跳动 / 腾讯 / 美团)
  • Redis 如何处理过期键?(字节跳动 / 滴滴)
  • Redis过期key的删除策略是什么?定期删除是另一个线程吗?(字节跳动 / 腾讯 / 美团)
  • Redis 的内存淘汰策略有哪些?(京东)
  • Redis 的过期策略和内存淘汰机制是什么?(字节跳动 / 京东 / 快手)
  • redis的lru lfu怎么实现的(字节跳动 / 美团 / 京东)
  • Redis 内存满了以后,读写请求会发生什么?(字节跳动 / 腾讯 / 美团)
  • 缓存过期时间应该如何设置?(字节跳动 / 京东 / 快手)
  • 常见缓存淘汰算法有哪些?(腾讯 / 美团 / 快手)
  • LRU、LRU-K,还了解其他缓存淘汰策略吗?(字节跳动 / 腾讯 / 京东)
  • Redis 为什么不用严格的 LRU,近似 LRU 是怎么做的?
  • LFU 的计数器是怎么设计的,怎么衰减?
  • volatile-lru 和 allkeys-lru 应该怎么选?
  • 主从架构下过期键是谁来删,从库会返回已过期的数据吗?
  • maxmemory 应该怎么设置,为什么要留余量?

缓存穿透、击穿、雪崩与布隆过滤器

  • 缓存穿透、缓存击穿、缓存雪崩分别是什么?如何解决?
  • 什么是缓存穿透,如何解决?(京东 / 华为 / 哔哩哔哩)
  • 缓存穿透除了存空值还有什么方案?(字节跳动 / 腾讯 / 快手)
  • 缓存击穿场景如何解决?(字节跳动 / 京东 / 小米)
  • Redis 缓存击穿是什么,如何解决?(字节跳动 / 京东 / 华为)
  • 缓存雪崩是什么,如何解决?(字节跳动 / 京东 / 华为)
  • 缓存击穿和缓存穿透的区别是什么?(字节跳动 / 快手 / 华为)
  • 缓存击穿和缓存雪崩的区别以及分别的应对方法是什么?(字节跳动 / 京东 / 快手)
  • redis三大问题和解决方法(美团 / 快手 / 百度)
  • 缓存三件套,一般是指什么问题?怎么解决?(字节跳动 / 腾讯 / 美团)
  • redis缓存失效问题(腾讯 / 美团 / 华为)
  • Redis常见缓存问题有哪些,如何解决?(百度 / 滴滴 / 携程)
  • 布隆过滤器的原理是什么,存在哪些问题?(字节跳动 / 京东 / 小米)
  • 布隆过滤器底层是怎么实现的?(字节跳动 / 快手 / 华为)
  • 布隆过滤器如何解决缓存穿透问题?(字节跳动 / 京东 / 华为)
  • 布隆过滤器是不是会出现误判的情况?(字节跳动 / 腾讯 / 美团)
  • 布隆过滤器误判如何处理?(腾讯 / 美团)
  • 布隆过滤器的简单实现以及哈希冲突如何解决(字节跳动 / 腾讯 / 美团)
  • 介绍一下你项目中的布隆过滤器的使用(美团 / 百度)
  • 布隆过滤器支持删除吗?有什么替代方案?
  • 热点数据过期瞬间大量请求打到数据库,怎么设计?
  • 互斥锁和逻辑过期两种击穿方案怎么取舍?
  • 怎么给缓存过期时间加随机值,为什么能防雪崩?
  • 布隆过滤器的位数组大小和哈希函数个数怎么算?
  • 布谷鸟过滤器和布隆过滤器有什么区别?
  • 缓存降级、熔断、限流在雪崩场景下各起什么作用?

缓存与数据库一致性

  • 缓存和数据库一致性如何保证?(京东)
  • Redis 如何保证一致性?(京东 / 华为)
  • 如何保证数据库 Redis 一致性,有哪些方案,为什么要延迟双删(字节跳动 / 腾讯 / 美团)
  • 为什么缓存一致性策略通常先改数据库再删缓存?(字节跳动 / 腾讯 / 美团)
  • 先更新缓存再更新数据库存在什么问题(字节跳动 / 美团 / 快手)
  • 缓存删除失败时应该怎么处理?(字节跳动 / 美团 / 拼多多)
  • redis缓存更新策略(字节跳动 / 快手 / 华为)
  • 缓存一致性有哪些方案?(字节跳动 / 美团 / 快手)
  • Redis的数据和缓存不一致应该怎么处理?(字节跳动 / 美团 / 京东)
  • 多级缓存如何实现?(字节跳动 / 京东 / 小米)
  • 多级缓存如何保证最终一致性?(字节跳动 / 京东 / 百度)
  • Redis和Caffeine两级缓存的数据一致性怎么保证?(字节跳动 / 美团 / 快手)
  • 本地缓存和 Redis 如何保持数据同步?(快手 / 滴滴)
  • 缓存方案如何设计?(字节跳动 / 百度 / 滴滴)
  • Cache Aside、Read/Write Through、Write Behind 三种模式有什么区别?
  • 订阅 binlog(Canal)删除缓存的方案怎么做?
  • 先删缓存再更新数据库,并发下会出现什么问题?
  • 延迟双删的延迟时间怎么定,有什么缺陷?
  • Redis 扣减库存成功但数据库更新失败怎么办?
  • 强一致性和最终一致性在缓存场景下怎么选?
  • 主从延迟会如何影响缓存一致性?

分布式锁与 Redisson

  • Redis 分布式锁如何实现?
  • 分布式锁机制如何实现?(京东 / 华为)
  • redis实现分布式锁的方式(单点和redlock)(字节跳动 / 京东 / 快手)
  • 分布式锁有哪些实现方式,各自适用什么场景?(字节跳动 / 京东 / 华为)
  • SETNX 实现分布式锁的底层原理是什么,存在哪些问题?(字节跳动 / 京东 / 百度)
  • Redis 获取分布式锁使用什么命令?(腾讯 / 美团 / 快手)
  • Redis加锁和释放锁的原理、注意事项(字节跳动 / 腾讯 / 美团)
  • Redis 分布式锁中如何使用 Lua 脚本保证原子性?(腾讯 / 快手 / 滴滴)
  • Redis 分布式锁有什么缺点?(字节跳动 / 小米 / 携程)
  • 分布式锁过期怎么解决?(字节跳动 / 腾讯 / 美团)
  • redis分布式锁的性能(字节跳动 / 快手 / 百度)
  • Redisson的分布式锁?(京东 / 快手 / 小米)
  • Redisson 分布式锁的看门狗和可重入原理是什么?(字节跳动 / 京东 / 快手)
  • Redisson 加锁机制是如何实现的?(字节跳动 / 腾讯 / 京东)
  • redis可重入锁(字节跳动 / 腾讯 / 快手)
  • Zookeeper 的分布式锁和 Redis 分布式锁的区别?(美团 / 快手 / 百度)
  • Zookeeper 如何实现分布式锁?(字节跳动 / 滴滴)
  • 为什么分布式锁要使用Redis?(字节跳动 / 京东 / 快手)
  • 哪些场景需要使用分布式锁?(腾讯 / 美团 / 百度)
  • 分布式锁实现要注意哪些方面?(字节跳动 / 腾讯 / 美团)
  • 如何设计一个分布式锁?需要考虑哪些问题?(字节跳动 / 腾讯 / 美团)
  • 看过Redisson分布式锁的源码吗?底层怎么实现的?(美团 / 京东 / 滴滴)
  • redis乐观锁实现方式?(字节跳动 / 京东 / 网易)
  • Redlock 算法的流程是什么,Martin Kleppmann 为什么质疑它?
  • 怎么给分布式锁加 fencing token 防止过期后误写?
  • 释放锁时为什么要校验锁的持有者?
  • Redisson 的联锁 MultiLock 和读写锁怎么用?
  • 主从切换时 Redis 分布式锁会丢吗?

主从复制、哨兵与集群

  • Redis主从复制(字节跳动 / 京东 / 快手)
  • Redis 主从复制的原理是什么?(字节跳动 / 京东 / 快手)
  • Redis 的哨兵模式(字节跳动 / 京东 / 快手)
  • Redis 哨兵模式和集群架构有什么区别?(字节跳动 / 京东)
  • Redis 高可用方案有哪些?(字节跳动 / 京东 / 快手)
  • Redis 怎么保证高可用主从机制,哨兵机制(字节跳动 / 腾讯 / 美团)
  • 介绍一下redis的高可用原理(字节跳动 / 腾讯 / 小米)
  • Redis有哪些集群模式?(字节跳动 / 京东 / 华为)
  • Redis Cluster模式(字节跳动 / 京东 / 华为)
  • Redis Cluster的原理是什么?(字节跳动 / 腾讯 / 快手)
  • Redis 集群部署中 Key 如何定位到节点?(字节跳动 / 腾讯 / 阿里巴巴)
  • redis常见的部署架构(字节跳动 / 腾讯 / 百度)
  • Redis出现脑裂现象时如何处理(腾讯 / 美团 / 快手)
  • Redis 集群故障如何处理?(腾讯 / 美团 / 华为)
  • Redis 数据同步如何解决(字节跳动 / 腾讯 / 华为)
  • Redis某个节点挂掉怎么办(腾讯 / 美团 / 京东)
  • 你知道Redis怎么保证稳定性和可靠性嘛?(字节跳动 / 腾讯 / 百度)
  • Redis中的集群如何部署,几个节点(美团 / 百度 / 滴滴)
  • 全量复制和增量复制分别什么时候触发,repl_backlog 是干什么的?
  • 哨兵如何判定主节点下线,主观下线和客观下线有什么区别?
  • 哨兵选主的过程是什么?
  • Redis Cluster 的 16384 个槽为什么是这个数?
  • Redis Cluster 扩缩容时数据怎么迁移,MOVED 和 ASK 有什么区别?
  • Redis Cluster 为什么不支持跨槽的多 key 操作,hash tag 是什么?
  • Gossip 协议在 Redis Cluster 里起什么作用?
  • 读写分离会遇到哪些问题?

大 Key、热 Key、事务与典型应用

  • 如何治理 Redis 大 Key?(字节跳动 / 哔哩哔哩 / 小红书)
  • Redis 大 Key 会带来什么性能影响,如何规避?(字节跳动 / 京东 / 快手)
  • redis大value问题,怎么解决(字节跳动 / 腾讯 / 美团)
  • Redis 热点 Key 问题如何处理?(字节跳动 / 京东 / 快手)
  • Redis热key会出现什么问题,如何解决?(字节跳动 / 京东 / 快手)
  • Redis热key和大key分别是什么,有什么影响,如何解决?(字节跳动 / 腾讯 / 美团)
  • Redis有事务吗?为什么?(美团 / 快手 / 滴滴)
  • Redis 事务如何使用?(京东 / 快手)
  • redis事务底层是如何实现的(美团 / 快手 / 华为)
  • Redis事务与数据库事务的区别(字节跳动 / 京东 / 百度)
  • 如何使用 Redis 原子操作和 Lua 脚本解决超卖问题?(美团 / 京东 / 百度)
  • Redis 如何用滑动窗口实现限流?(字节跳动 / 京东 / 华为)
  • redis做延迟队列讲一下(腾讯 / 美团 / 京东)
  • Redis实现延时队列的原理是怎样的?(字节跳动 / 百度 / 小红书)
  • 如何用 Redis 设计一个消息队列?(字节跳动 / 腾讯 / 小米)
  • Redis 消息队列与 RabbitMQ 的本质区别是什么?(美团 / 快手 / 华为)
  • Redis 的 Lua 脚本有什么注意事项,会不会阻塞?
  • Redis 的 WATCH 乐观锁是怎么实现的?
  • 怎么发现线上的大 Key 和热 Key?
  • 秒杀场景下怎么用 Redis 做库存预扣?
  • 用 Redis 实现 session 共享要注意什么?
  • 令牌桶和漏桶限流怎么用 Redis 实现?
  • Redis 的发布订阅有什么缺点?

缓存算法与手撕题

  • 实现 LRU Cache 缓存(Shopee / 字节跳动 / 哔哩哔哩)
  • 如何用双向链表和 HashMap 实现 O(1) 的 LRU 缓存?(字节跳动 / 快手 / 拼多多)
  • 如何手写一个 LRU 缓存?(京东 / 哔哩哔哩 / 字节跳动)
  • 手撕:实现一个超时自动删除的 LRU 缓存(字节跳动)
  • 如何实现一个线程安全的 LRU 缓存?(华为)
  • 如何设计并实现 LFU 缓存?(字节跳动 / 拼多多)
  • LRU 缓存算法原理?
  • 针对于 LRU 缓存策略,实现的话用什么数据结构?(京东 / 字节跳动)
面灵AI 笔试助手

笔试机考碰上这类手撕代码题

不用切屏:鼠标在「解题」按钮上停 1.2 秒,AI 读完题,把思路、复杂度和代码直接贴在考试页上方。

2026 届秋招 · 后端开发工程师笔试nowcoder.com/exam剩余 42:10交卷
已进入全屏防作弊模式,切屏 / 退出全屏将被记录
Online Assessment
算法编程题 · 3 / 12

请实现一个 LRU 缓存,支持 get(key) 和 put(key, val),容量满时淘汰最久未使用的项,两个操作都要求 O(1)。
示例:容量 2,put(1,1) put(2,2) get(1)=1,put(3,3) 淘汰 key 2,get(2)=-1

solution.py
class Node:
def __init__(self, key, val):
self.key = key
self.val = val
self.prev = None
self.next = None
class LRUCache:
def __init__(self, capacity):
pass
def get(self, key):
pass
def put(self, key, val):
pass
面灵AI
已连接编程余 27min
悬停回看
把鼠标悬停到下方「解题」按钮 1.2 秒
AI 会自动截屏并解答
也可以直接按 Ctrl+Enter,手不用离开键盘
悬停看新
编程
5min/题
解题
^⏎
加页
^H
重置
悬停 0.8s
退出
悬停 2.5s
悬停 1.2 秒触发,焦点不离开考试页——不切屏、不切窗口;浮窗可调到近乎透明,第二机位拍到的几乎只剩考试页本身

备考重点

Redis 八股的特点是概念集中、场景驱动、追问爱落到"线上出了问题怎么办"。几乎所有问题都能挂到同一条主线上:数据放在内存里,所以快;放在内存里,所以要考虑持久化和淘汰;单机不够,所以有主从、哨兵和集群;作为缓存放在数据库前面,所以有穿透、击穿、雪崩和一致性;多个服务共用它,所以有分布式锁。把这条主线讲通,零散的题会自己串起来。

建议按这个顺序准备:先讲清 Redis 为什么快(内存、单线程命令执行、IO 多路复用)和五种基本类型的底层结构,再吃透持久化的 RDB、AOF 与混合模式,然后是缓存三大问题与布隆过滤器、缓存一致性,最后补分布式锁与高可用。 面试里最容易丢分的不是不会,而是把"单线程"说成"整个 Redis 都是单线程",或者把缓存击穿和穿透说混。

分布式锁和一致性是拉开差距的两块。别只背"setnx 加过期时间",要能讲出完整思路:加锁为什么要一条命令同时设置值和过期时间,释放锁为什么要校验持有者,业务超时锁过期了怎么办,主从切换会不会丢锁,以及 Redisson 的看门狗是怎么续期的。一致性同理,要能解释为什么选择先更新数据库再删缓存,以及删除失败后的补偿手段。

常见问题

这份题单是怎么整理出来的?

来源是公开面经与题库沉淀,把 Redis 方向反复出现的八股题抽出来重新归类,不包含面灵用户的面试内容。括号里标注的是近期实际问过这道题的大厂,只作参考,不代表完整名单。

Redis 面试八股应该先准备哪些部分?

优先顺序建议是:数据结构与为什么快 → 持久化 → 缓存穿透、击穿、雪崩 → 缓存与数据库一致性 → 分布式锁 → 主从、哨兵与集群 → 过期与淘汰。前五块是各大厂后端岗的公共必考区,后面几块再按目标岗位和简历上写的项目补。

面试官问缓存问题,一般会追问到什么程度?

通常是三层:先问穿透、击穿、雪崩各是什么,再追问各自的解决方案和适用条件,比如布隆过滤器的误判、互斥锁和逻辑过期怎么取舍,最后落到你项目里实际怎么做的。能讲出自己场景里选了哪种方案、为什么没选另一种,比背标准答案更容易拿分。

Redis 是单线程的吗?

要分层来看。Redis 的命令执行主线程是单线程的,所以单条命令天然是原子的,也不需要加锁;过期键的惰性删除和定期删除也都在这个主线程里执行。但整个进程不止一个线程:RDB 和 AOF 重写由 fork 出的子进程完成,AOF 的 fsync 可以交给后台线程;开启 lazyfree 后,大 Key 的内存释放走后台线程异步进行;6.0 之后网络读写也可以交给 IO 线程并行处理。更准确的说法是"命令执行是单线程,整个进程不是"。

想要一份属于你的题库?

按你的目标公司和岗位,定制专属高频题

这份合集是官方按岗位整理的通用版。告诉面灵AI 你要面的公司和岗位,结合你的简历,生成一份只属于你的近期高频题和参考回答。

面试实时辅助

下载面灵AI桌面客户端,面试 / 笔试时 AI 实时听题辅助作答。