Skip to content
基础

一句话答案

Redis 支持丰富数据结构/持久化/集群/Lua 脚本;Memcached 纯内存多线程,只支持 String,更简单。

核心要点
维度单机(Standalone)哨兵(Sentinel)集群(Cluster)
架构单节点主从 + Sentinel 监控多主多从,数据分片
高可用无(单点故障)有(自动故障转移)有(自动故障转移)
数据分片不支持不支持(全量数据在主节点)支持(16384 slot 分片)
写扩展不支持不支持(单主写入)支持(多主并行写入)
读扩展不支持支持(从节点分担读)支持(从节点分担读)
最大容量单机内存单机内存所有主节点内存之和
复杂度
适用场景开发/测试/小数据量读多写少,数据量可单机承载大数据量、高并发、需要水平扩展

选型决策:

数据量 < 单机内存 且 写 QPS 不高?
  ├─ 不需要高可用 → 单机(最简单)
  └─ 需要高可用   → 哨兵模式(主从 + 自动切换)

数据量 > 单机内存 或 写 QPS 很高(需要分散到多节点)?
  → Redis Cluster(数据分片 + 自动故障转移)

实际生产:
  小型项目 → 哨兵模式(1主2从3哨兵)
  中大型项目 → Redis Cluster(至少 3主3从)

各模式的数据同步方式:

单机:无同步
哨兵:主从异步复制(和普通主从一样)
Cluster:
  ① 节点内(主→从):异步复制
  ② 节点间(slot 迁移):MIGRATE 命令原子迁移 key
  ③ 不支持跨 slot 事务(不同 slot 可能在不同节点)

七、限流

追问与易错

追问方向:

  • 什么场景 Memcached 更好?
  • Redis 6.0 多线程和 Memcached 多线程区别?
  • Memcached slab 分配问题?

易错点:

  • ❌ Redis 完全替代 Memcached——纯 KV 场景后者有优势
  • ❌ Redis 单线程所以吞吐低——瓶颈通常在网络不在 CPU

💡 记忆锚点

Redis是瑞士军刀(多数据结构、持久化、集群、脚本样样行),Memcached是一把快刀(纯内存多线程KV,简单但锋利)。选型口诀:只切菜用快刀,做全桌菜用瑞士军刀。