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?
面试官问「缓存穿透、缓存击穿、缓存雪崩分别是什么?怎么解决?」,看浮窗当场给你什么
面试官一开口,浮窗就出要点和能直接念的回答,被追问也接得住。共享屏幕时对面看不见。
核心要点 穿透是查不存在的数据、击穿是单个热 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 缓存策略,实现的话用什么数据结构?(京东 / 字节跳动)
笔试机考碰上这类手撕代码题
不用切屏:鼠标在「解题」按钮上停 1.2 秒,AI 读完题,把思路、复杂度和代码直接贴在考试页上方。
请实现一个 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
AI 会自动截屏并解答
也可以直接按 Ctrl+Enter,手不用离开键盘
备考重点
Redis 八股的特点是概念集中、场景驱动、追问爱落到"线上出了问题怎么办"。几乎所有问题都能挂到同一条主线上:数据放在内存里,所以快;放在内存里,所以要考虑持久化和淘汰;单机不够,所以有主从、哨兵和集群;作为缓存放在数据库前面,所以有穿透、击穿、雪崩和一致性;多个服务共用它,所以有分布式锁。把这条主线讲通,零散的题会自己串起来。
建议按这个顺序准备:先讲清 Redis 为什么快(内存、单线程命令执行、IO 多路复用)和五种基本类型的底层结构,再吃透持久化的 RDB、AOF 与混合模式,然后是缓存三大问题与布隆过滤器、缓存一致性,最后补分布式锁与高可用。 面试里最容易丢分的不是不会,而是把"单线程"说成"整个 Redis 都是单线程",或者把缓存击穿和穿透说混。
分布式锁和一致性是拉开差距的两块。别只背"setnx 加过期时间",要能讲出完整思路:加锁为什么要一条命令同时设置值和过期时间,释放锁为什么要校验持有者,业务超时锁过期了怎么办,主从切换会不会丢锁,以及 Redisson 的看门狗是怎么续期的。一致性同理,要能解释为什么选择先更新数据库再删缓存,以及删除失败后的补偿手段。
常见问题
这份题单是怎么整理出来的?
来源是公开面经与题库沉淀,把 Redis 方向反复出现的八股题抽出来重新归类,不包含面灵用户的面试内容。括号里标注的是近期实际问过这道题的大厂,只作参考,不代表完整名单。
Redis 面试八股应该先准备哪些部分?
优先顺序建议是:数据结构与为什么快 → 持久化 → 缓存穿透、击穿、雪崩 → 缓存与数据库一致性 → 分布式锁 → 主从、哨兵与集群 → 过期与淘汰。前五块是各大厂后端岗的公共必考区,后面几块再按目标岗位和简历上写的项目补。
面试官问缓存问题,一般会追问到什么程度?
通常是三层:先问穿透、击穿、雪崩各是什么,再追问各自的解决方案和适用条件,比如布隆过滤器的误判、互斥锁和逻辑过期怎么取舍,最后落到你项目里实际怎么做的。能讲出自己场景里选了哪种方案、为什么没选另一种,比背标准答案更容易拿分。
Redis 是单线程的吗?
要分层来看。Redis 的命令执行主线程是单线程的,所以单条命令天然是原子的,也不需要加锁;过期键的惰性删除和定期删除也都在这个主线程里执行。但整个进程不止一个线程:RDB 和 AOF 重写由 fork 出的子进程完成,AOF 的 fsync 可以交给后台线程;开启 lazyfree 后,大 Key 的内存释放走后台线程异步进行;6.0 之后网络读写也可以交给 IO 线程并行处理。更准确的说法是"命令执行是单线程,整个进程不是"。
更多岗位合集
Java面试题与八股文汇总:380+ 道集合、并发、JVM、Spring、MyBatis 高频真题分类整理(2026 面经)
面灵AI整理的 Java 八股合集,覆盖基础与面向对象、HashMap 与 ConcurrentHashMap、线程池、synchronized 与 AQS、JVM 与 GC、类加载、Spring、Spring Boot、MyBatis 和手撕题,标注近期出题的大厂。
操作系统面试题与八股文汇总:290+ 道进程线程、内存管理、死锁、IPC、零拷贝、Linux 命令高频真题分类整理(2026 面经)
面灵AI整理的操作系统八股合集,覆盖进程与线程、协程、调度算法、进程间通信、锁与死锁、虚拟内存与页表、内存泄漏与 OOM、零拷贝与 Linux 线上排查,标注近期出题的大厂。
计算机网络面试题与八股文汇总:300+ 道 TCP、UDP、HTTP、HTTPS、DNS、IO 多路复用高频真题分类整理(2026 面经)
面灵AI整理的计算机网络八股合集,覆盖网络分层、TCP 三次握手四次挥手、拥塞控制、TIME_WAIT、HTTP 各版本、HTTPS、DNS、WebSocket 与 epoll,标注近期出题的大厂。