跳到主要内容

Redis

Redis 面试八股。和 MySQL 不同,Redis 的题目更偏运维与架构取舍:数据结构选型、持久化丢数据的边界、缓存一致性、分布式锁的正确性、高可用方案的代价。

:::tip 速览 Redis 快的原因有四个,答题要答全:纯内存操作、单线程避免锁竞争和上下文切换、IO 多路复用(epoll)处理高并发连接、针对场景优化的数据结构编码。注意「单线程」指的是命令执行,Redis 6.0 起网络 IO 是多线程的。 :::

条目核心问题
数据结构与编码五大类型的底层实现、编码转换阈值、各自适用场景
持久化RDB / AOF 怎么选?各自丢多少数据?
过期与内存淘汰过期键怎么删的?内存满了淘汰谁?
缓存问题与一致性穿透 / 击穿 / 雪崩、双写一致性方案
分布式锁怎么写才正确?Redlock 争议
高可用架构主从 / 哨兵 / Cluster 的演进与取舍

高频开场题​

Redis 和 Memcached 的区别? 数据结构(Redis 有五大类型及更多,Memcached 只有字符串)、持久化(Redis 有,Memcached 无)、集群(Redis Cluster 原生支持,Memcached 靠客户端分片)、线程模型(Memcached 多线程,大 value 场景吞吐更高)。

为什么用缓存? 两个维度:性能(内存访问是微秒级,磁盘随机 IO 是毫秒级,差三个数量级)和并发(单机 Redis 能撑 10 万 QPS,MySQL 单机通常几千)。代价是引入了一致性问题和额外的故障点,这是追问必考的。