这道题是缓存面试必考题,面试官想听的不是“背表格”,而是你懂使用场景和底层差异。
我按 一句话 → 核心区别 → 底层原理 → 使用场景 → 面试总结话术 来讲。
一、一句话先给面试官
Redis 功能更丰富、支持持久化和复杂数据结构;Memcached 更轻量,只做纯内存 KV 缓存,性能极致但功能单一。
二、核心区别总览(高频)
| 维度 | Redis | Memcached |
|---|---|---|
| 数据结构 | 丰富(String / List / Set / ZSet / Hash 等) | 仅 KV(String) |
| 持久化 | 支持(RDB / AOF) | ❌ 不支持 |
| 内存模型 | 内存 + 可持久化到磁盘 | 纯内存 |
| 线程模型 | 单线程(I/O 多路复用) | 多线程 |
| 数据大小 | 单 value ≤ 512MB | 单 value ≤ 1MB |
| 分布式 | 原生支持主从、哨兵、Cluster | 客户端分片 |
| 原子性 | 单命令原子 | 有限 |
| Lua | 支持 | ❌ |
| 使用场景 | 缓存 + 数据结构服务 | 简单高速缓存 |
三、底层差异(面试加分点)
1️⃣ 线程模型
Redis
- 单线程处理命令
- 避免锁竞争
- 依赖 I/O 多路复用(epoll)
- 瓶颈在网络,不在 CPU
Memcached
- 多线程模型
- 需要加锁
- 多核 CPU 利用率高
👉 面试官常追问:
为什么 Redis 单线程还快?
✔ 无锁 + 高效数据结构 + 内存操作
2️⃣ 数据结构支持
Redis
- 不只是缓存,更像 内存数据库
- 可实现:
- 排行榜(ZSet)
- 消息队列(List / Stream)
- 分布式锁(SETNX)
Memcached
- 只支持简单 KV
- 功能专一、极简
3️⃣ 持久化能力
Redis
- RDB:快照
- AOF:追加日志
- 可保证数据恢复
Memcached
- 重启即丢数据
- 完全当缓存用
👉 这点通常是决定性差异
四、分布式与高可用
Redis
- 主从复制
- Sentinel 自动故障转移
- Redis Cluster(槽位)
Memcached
- 没有服务端分布式
- 依赖客户端一致性 Hash
- 节点挂了,缓存大面积失效
五、性能对比(真实情况)
- 纯 KV 小对象
- Memcached ≈ Redis
- 复杂操作 / 大 value
- Redis 明显更强
- 功能换性能
- Redis 性能略低,但可接受
👉 现在大多数公司 默认选 Redis
六、什么时候用 Memcached?
✅ 极端高并发
✅ 数据结构非常简单
✅ 数据丢了无所谓
✅ 老系统 / 历史包袱
👉 否则,Redis 基本碾压
七、面试标准回答模板(直接背)
Redis 和 Memcached 都是内存缓存,但 Redis 支持丰富的数据结构和持久化,适合缓存 + 数据服务;Memcached 只支持简单 KV,纯内存多线程,性能高但功能单一。Redis 原生支持主从、哨兵和集群,而 Memcached 依赖客户端分片。在实际生产中,Redis 使用更广泛。
八、面试官可能继续追问的点
我可以直接帮你预演👇
- Redis 为什么单线程?
- Redis 会不会阻塞?
- Redis 内存淘汰策略
- Redis 怎么做分布式锁?
- Redis 崩了怎么办?
你是 校招 还是 社招 / 架构方向?我可以按级别帮你“定制答案”。