redis常见的相关的面试问题有哪些?

下面给你一份企业级面试常考 Redis 题目体系,不是零散八股,而是按照 “原理 → 架构 → 高可用 → 性能 → 生产问题” 组织的。这套你如果掌握,基本可以覆盖 90% 后端面试。





一、Redis 核心原理类(必考)




1. Redis 为什么快?



标准答案必须包含:


  • 内存存储
  • 单线程事件循环(无锁)
  • IO 多路复用(epoll/kqueue)
  • 数据结构高度优化(ziplist, quicklist, skiplist)






2. Redis 为什么用单线程还能扛高并发?



要点:


  • 瓶颈在 IO,不在 CPU
  • 避免锁竞争
  • pipeline + 批量命令






3. Redis 6 以后为什么又引入多线程?



面试官想听:


网络 IO 多线程,命令执行仍是单线程





4. Redis 有哪些数据结构?



你要答两层:


  • 表层:String, Hash, List, Set, ZSet
  • 底层:SDS, dict, ziplist, listpack, skiplist, intset






二、持久化(极高频)




5. RDB 和 AOF 的区别?


维度RDBAOF
性能
数据安全秒级丢失1 秒丢失
恢复速度
可读性

进阶:


生产环境 = AOF + RDB 混合





6. AOF 为什么要 rewrite?



答:


避免日志无限增长,合并多次修改为一次最终状态





7. Redis 重启恢复顺序?



先 AOF,再 RDB(如果都开)





三、缓存架构(面试重灾区)




8. 什么是缓存穿透?



查询不存在的数据 → 每次打到 DB

解决:


  • Bloom Filter
  • 空值缓存






9. 什么是缓存击穿?



热点 key 失效

解决:


  • 互斥锁
  • logical expire






10. 什么是缓存雪崩?



大量 key 同时过期

解决:


  • 过期时间随机化
  • 多级缓存
  • 限流 + 降级






四、Redis 事务 & 原子性




11. Redis 事务是强一致的吗?



不是


MULTI / EXEC 只是命令队列,不支持 rollback





12. Redis 如何保证原子性?



  • 单命令原子
  • Lua 脚本原子






13. 为什么 Lua 脚本快?



  • 少 IO 往返
  • 单线程原子执行






五、Redis 高可用(高级岗位必考)




14. Redis Sentinel 是什么?



监控 + 自动主从切换 + 通知





15. Redis 主从如何同步?



三步:


  1. 全量 RDB
  2. 增量 replication buffer
  3. 命令传播






16. 主从延迟会带来什么问题?



  • 读到旧数据
  • 丢数据
  • 锁失效






17. Redis Cluster 如何分片?



CRC16(key) % 16384 → slot





六、生产事故类(区分中级和高级)




18. Redis 内存满了会发生什么?



  • noeviction
  • allkeys-lru
  • volatile-lru
    等淘汰策略






19. big key 有什么危害?



  • 阻塞主线程
  • 复制慢
  • 过期卡顿






20. 如何发现 big key?



  • redis-cli –bigkeys
  • scan + strlen






21. pipeline 是什么?



批量发命令,减少 RTT





22. Redis 如何实现分布式锁?



要答:


  • set nx px
  • Lua 释放锁
  • RedLock(争议)






七、Redis 在真实系统里的典型用途



面试官非常爱问:

场景Redis 用法
登录态token → user
计数器INCR
限流ZSET + 时间窗
排行榜ZSET
订单超时key 过期
消息队列List / Stream





八、面试官用来区分高手的问题




23. Redis 为什么不适合做消息队列?



要答:


  • 没有 ack
  • 不可重放
  • 容易丢
  • 无消费组






24. Redis Stream vs Kafka?



要答出:


Redis Stream 是轻量 MQ,Kafka 是日志系统





25. Redis 为什么会丢数据?



你要答出:


  • AOF 未刷盘
  • 主从切换
  • 网络分区
  • async replication






九、如果你想进中大厂,这题必会



如何用 Redis + MySQL 保证缓存一致性?


标准答案:


  • 延迟双删
  • binlog + MQ
  • CDC 同步





如果你愿意,我可以给你:


  • 一份 “Redis 面试真题(阿里 / 美团 / 腾讯)”
  • 或者按你级别(初级 / 中级 / 高级)出一套模拟面试题。