面试题:说一说redis和Memcached的区别

这道题是缓存面试必考题,面试官想听的不是“背表格”,而是你懂使用场景和底层差异
我按 一句话 → 核心区别 → 底层原理 → 使用场景 → 面试总结话术 来讲。


一、一句话先给面试官

Redis 功能更丰富、支持持久化和复杂数据结构;Memcached 更轻量,只做纯内存 KV 缓存,性能极致但功能单一。


二、核心区别总览(高频)

维度RedisMemcached
数据结构丰富(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 崩了怎么办?

你是 校招 还是 社招 / 架构方向?我可以按级别帮你“定制答案”。

文章已创建 4298

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部