1. 快速概览
项目 | Redis | Memcached |
---|---|---|
类型 | 内存型数据存储,支持多种数据结构 | 简单的内存键值存储 |
线程模型 | 单线程 | 多线程 |
数据类型 | Strings、Lists、Sets、Hashes、Sorted Sets… | 仅键值对(二进制安全) |
持久化 | 支持(RDB/AOF),可配置 | 不支持(仅 RAM) |
复制/集群 | 支持副本、分片和集群 | 仅手动分片 |
Pub/Sub、Lua | 支持 | 不支持 |
2. 性能
- Memcached
- 多线程,可充分利用多核 CPU,在简单的 GET/SET 操作上吞吐量极高。
- 延迟:标准负载下约 0.1–0.5 毫秒。
- Redis
- 单线程但高度优化;借助流水线(pipelining)和 I/O 多路复用,每秒可超过 100 000 次操作。
- 支持流水线减少 RTT,Lua 脚本可批量执行多个命令。
直接对比,在纯 GET/SET 场景下,Memcached 的吞吐量可能比 Redis 高出几个百分点;但在使用流水线、批处理或复杂数据结构时,Redis 往往更具优势。
3. 优缺点
Redis
优点
- 丰富的数据结构:列表、集合、哈希、有序集合、Stream 等,适用于缓存、排行榜、队列等多种场景。
- 持久化:RDB 快照和 AOF 日志保证数据可恢复。
- 高可用:支持主从复制、Sentinel 自动故障转移、集群分片。
- Pub/Sub & 流:内置消息发布订阅和流式处理能力。
- Lua 脚本与事务:原子化多命令执行,减少网络往返。
缺点
- 单线程:单实例仅利用一个 CPU 核心,限制并行处理能力。
- 内存开销:丰富的数据结构比 Memcached 占用更多 RAM。
- 运维复杂:功能多,需要更细致的配置和监控。
Memcached
优点
- 简单轻量:仅键值对,安装配置简单,部署快速。
- 多线程:天然利用多核,实现高吞吐量。
- 内存效率高:每项开销极低,非常适合纯缓存场景。
- 生态成熟:大量客户端、插件和模块支持。
缺点
- 无持久化:重启后缓存全部丢失。
- 数据模型单一:仅键值对。
- 无内置高可用:分片和故障转移需外部管理。
4. 基本部署流程
部署 Memcached
安装
sudo apt-get update
sudo apt-get install memcached
配置 (/etc/memcached.conf
)
-m
:内存大小(MB)-p
:端口(默认 11211)-u
:运行用户-t
:线程数
启动与监控
systemctl enable memcached
systemctl start memcached
可使用 memcached-tool
或 telnet 连接 stats
命令查看统计数据。
分片:通过客户端分片或使用 Twemproxy 等代理实现。
部署 Redis
安装
sudo apt-get update
sudo apt-get install redis-server
配置 (/etc/redis/redis.conf
)
maxmemory
&maxmemory-policy
- 持久化:
save
(RDB)、appendonly yes
(AOF) - 复制:
replicaof host port
- 集群设置(如需)
启动与监控
systemctl enable redis-server
systemctl start redis-server
Use redis-cli info
to inspect stats, replication, and memory usage.
- Scaling
- Replica: add Redis replicas for read scaling.
- Sentinel: configure for auto‑failover HA.
- Cluster mode: automatic sharding across multiple nodes.
5. When to Choose Which
Use Case | Choose Redis | Choose Memcached |
---|---|---|
Simple key–value caching only | ❌ | ✔ |
Extreme throughput across many cores | ❌ | ✔ |
Need complex data types (queues, sorted sets) | ✔ | ❌ |
Need persistence & recovery on restart | ✔ | ❌ |
Need built‑in pub/sub or messaging | ✔ | ❌ |
Require auto‑failover and high availability | ✔ (Sentinel/Cluster) | ❌ (external management) |
Want minimal configuration & footprint | ❌ | ✔ |
- 使用
redis-cli info
查看内存、复制及统计信息。 - 扩展
- 副本:新增从节点以扩展读能力。
- Sentinel:配置自动故障转移与高可用。
- 集群:多节点自动分片。
5. 何时选择哪种
场景 | 选择 Redis | 选择 Memcached |
---|---|---|
仅需简单键值缓存 | ❌ | ✔ |
需要极限多核吞吐 | ❌ | ✔ |
需要复杂数据结构(队列、有序集合等) | ✔ | ❌ |
需要持久化与重启恢复 | ✔ | ❌ |
需要内置 Pub/Sub 或消息系统 | ✔ | ❌ |
需要自动故障转移和高可用 | ✔ (Sentinel/Cluster) | ❌ (需外部管理) |
希望配置和运维尽量简单 | ❌ | ✔ |
结论
- 如果您的应用只需简单、高速的内存缓存,而不需要持久化或复杂数据结构,选择 Memcached。
- 如果您需要丰富的数据类型、持久化、复制/高可用、Pub/Sub 或 脚本化 功能,或计划通过集群扩展,选择 Redis。
Bài Viết Liên Quan
W3 Total Cache 完整介绍
WP Super Cache 简介
LiteSpeed Cache介绍 – 优缺点分析
WP Rocket 是一款优秀的 WordPress 缓存工具
Memcached 和 Redis 缓存我应该使用哪一个?
Memcached 缓存 何时为您的网站使用 Memcached
Bài Viết Cùng thể loại
W3 Total Cache 完整介绍
WP Super Cache 简介
LiteSpeed Cache介绍 – 优缺点分析
WP Rocket 是一款优秀的 WordPress 缓存工具
Memcached 和 Redis 缓存我应该使用哪一个?
Memcached 缓存 何时为您的网站使用 Memcached