这里记录了 Redis 及缓存架构相关的核心面试题:
数据结构与底层原理
- Redis 常用数据类型及应用场景
- Redis 字符串的底层实现 SDS
- Redis 有序集合的底层实现和跳表原理
- Redis Hash 字典的底层实现和渐进式 rehash
- Redis 单线程高性能的原因
- Redis 引入多线程的原因
持久化与内存管理
- Redis 的持久化机制 RDB 和 AOF 有什么区别?各自的优缺点?
- 什么是 AOF 重写(bgrewriteaof)?
- Redis 的过期键删除策略有哪些(定时、定期、惰性)?
- Redis 的内存淘汰机制有哪些(LRU、LFU 等)?
- 讲讲 Redis 中的近似 LRU 算法是如何实现的?
缓存高并发问题
- 什么是缓存穿透?如何解决(布隆过滤器、空对象缓存)?
- 什么是缓存击穿?如何解决(互斥锁、逻辑过期)?
- 什么是缓存雪崩?如何解决(随机过期时间、高可用架构)?
- 如何保证数据库与缓存的双写一致性(Cache Aside Pattern、延迟双删等)?
分布式与高可用架构
- Redis 如何实现分布式锁?有哪些坑?
- 什么是 Redlock 算法?Redisson 是如何实现可重入锁和看门狗机制的?
- Redis 主从复制的原理是什么?什么是全量同步和增量同步?
- Redis 哨兵(Sentinel)模式的原理?它是如何进行故障转移的?
- Redis Cluster 集群模式的原理?什么是 Hash 槽(Hash Slot)?
- Redis 集群中节点之间是如何通信的(Gossip 协议)?