第3章:分布式缓存核心原理 —— Redis/Memcached 数据模型、淘汰策略、持久化机制

本章聚焦三大面试高频考点:数据模型差异、淘汰策略选型、持久化机制权衡。要求面试者不仅掌握概念,更能结合业务场景给出量化对比和选型建议。以下通过3个问答卡片+1个项目案例,拆解回答结构和加分要点。

核心差异一览

对比维度RedisMemcached
数据模型Key-Value + 5 种数据结构(String / Hash / List / Set / Sorted Set)纯 Key-Value,仅支持 String 类型
Value 上限512 MB1 MB
淘汰策略8 种(noeviction / volatile-lru/lfu/ttl/random / allkeys-lru/lfu/random)仅 LRU
持久化RDB(快照) + AOF(日志)+ 混合持久化无持久化
原子操作事务 + Lua 脚本单操作原子
内存管理对象共享 + 内存碎片优化Slab Allocation
适用场景复杂数据结构、持久化需求、分布式锁、排行榜等纯缓存场景,简单 KV 读取
Redis vs Memcached 数据模型对比 · 回答框架 明确对比边界 数据模型 + 能力维度 数据结构差异 5 种 vs 仅 String 核心能力对比 持久化 / 原子 / 内存 场景化定位 复杂缓存选 Redis 总结收尾 按场景选型 💡 面试加分:每个维度都带具体数值(512MB / 1MB / 5种)并关联业务场景

📌 面试问题:请对比 Redis 和 Memcached 的数据模型,说明各自适用场景。

🎯 面试官考察点

  • 对两种缓存核心差异的理解深度,是否停留在概念层面
  • 数据结构敏感度——能否准确说出 Redis 的数据结构及对应场景
  • 技术选型判断力——能否给出明确的场景化建议

📐 回答框架

  1. 开篇定性:一句话概括两者定位差异——Redis 是数据结构服务器,Memcached 是纯 KV 缓存
  2. 数据结构对比:列举 Redis 5 种数据结构 vs Memcached 仅 String,附带 Value 上限
  3. 核心能力对比:原子操作(事务/Lua vs 单操作)、内存管理(共享+碎片优化 vs Slab)
  4. 场景化收尾:复杂业务用 Redis,简单 KV 用 Memcached,给出明确建议

✏️ 示例回答

Redis 支持 String/Hash/List/Set/Sorted Set 五种结构,Value 上限 512MB,支持事务和 Lua 原子操作;Memcached 仅支持 String,Value 上限 1MB,单操作原子。Redis 通过对象共享和内存碎片优化内存,Memcached 采用 Slab Allocation。选型建议:复杂缓存、持久化场景用 Redis;简单 KV 缓存用 Memcached。

🔍 可能追问

  • Redis 的 String 底层用了哪些编码方式?(int / embstr / raw)