Redis vs Memcached 缓存系统全面对比
缓存是提升 Web 应用性能的关键技术。Redis 和 Memcached 是两款最流行的内存缓存系统,几乎所有高性能 Web 应用都会使用其中之一。虽然两者都将数据存储在内存中以提供极快的读写速度,但它们的设计理念和功能范围差异很大。本文将帮助你选择合适的缓存方案。购买搬瓦工使用优惠码 NODESEEK2026 享 6.77% 折扣。
一、基本介绍
Redis(Remote Dictionary Server)由 Salvatore Sanfilippo 于 2009 年发布,是一个高性能的键值存储,支持多种数据结构(字符串、哈希、列表、集合、有序集合等)。Redis 不仅是缓存,还可以作为消息队列、会话存储和实时分析数据库使用。
Memcached 由 Brad Fitzpatrick 于 2003 年开发,最初用于 LiveJournal 网站。Memcached 设计极为简洁,专注于纯粹的键值缓存,仅支持字符串类型,以多线程架构提供高吞吐量。
二、核心对比表
| 对比维度 | Redis | Memcached |
|---|---|---|
| 数据结构 | String/Hash/List/Set/ZSet/Stream 等 | 仅 String(键值对) |
| 持久化 | RDB 快照 + AOF 日志 | 不支持 |
| 线程模型 | 单线程(6.0 起 I/O 多线程) | 多线程 |
| 最大值大小 | 512MB | 1MB(默认) |
| 集群方案 | Redis Cluster / Sentinel | 客户端一致性哈希 |
| 发布订阅 | 原生 Pub/Sub | 不支持 |
| Lua 脚本 | 支持 | 不支持 |
| 事务 | MULTI/EXEC | CAS 操作 |
| 过期策略 | 惰性 + 定期删除 | 惰性删除 + LRU |
| 内存效率 | 较高(多种编码优化) | 更高(纯缓存场景) |
| 复制 | 主从复制 | 不支持原生复制 |
| 适用场景 | 缓存 / 会话 / 队列 / 排行榜 | 纯缓存(简单键值对) |
三、安装部署
3.1 安装 Redis
# Ubuntu/Debian
apt update && apt install redis-server -y
systemctl enable redis-server && systemctl start redis-server
# 验证
redis-cli ping
# 返回 PONG
详细安装和配置请参考 Redis 安装教程。
3.2 安装 Memcached
# Ubuntu/Debian
apt update && apt install memcached libmemcached-tools -y
systemctl enable memcached && systemctl start memcached
# 验证
echo "stats" | nc localhost 11211
四、数据操作对比
4.1 Redis 数据操作
redis-cli
# 字符串
SET user:1:name "张三"
GET user:1:name
# 哈希
HSET user:1 name "张三" age 25 city "北京"
HGETALL user:1
# 列表(消息队列)
LPUSH queue:tasks "task1" "task2"
RPOP queue:tasks
# 有序集合(排行榜)
ZADD leaderboard 100 "player1" 200 "player2" 150 "player3"
ZREVRANGE leaderboard 0 -1 WITHSCORES
# 设置过期时间
SET session:abc123 "user_data" EX 3600
4.2 Memcached 数据操作
# 通过 telnet 操作
telnet localhost 11211
# 存储数据(set key flags exptime bytes)
set user:1:name 0 3600 6
张三
# 获取数据
get user:1:name
# 删除数据
delete user:1:name
# 自增
incr counter 1
五、Docker 部署
# Redis Docker
docker run -d --name redis \
-p 6379:6379 \
-v redis_data:/data \
redis:7-alpine \
redis-server --appendonly yes --requirepass yourpassword
# Memcached Docker
docker run -d --name memcached \
-p 11211:11211 \
memcached:alpine \
memcached -m 256
六、性能对比
在纯 GET/SET 操作的基准测试中,两者性能接近(每秒数十万次操作)。Memcached 的多线程架构在高并发简单键值操作上略有优势,Redis 在复杂数据结构操作上更快。
# Redis 自带基准测试
redis-benchmark -h 127.0.0.1 -p 6379 -n 100000 -c 50 -q
# 典型结果
# SET: 120000 requests per second
# GET: 130000 requests per second
对于搬瓦工 VPS 上的一般应用场景,Redis 和 Memcached 的性能都远超需求,选择时不需要纠结性能差异。
七、持久化与可靠性
Redis 支持两种持久化机制,可以在服务器重启后恢复数据:
# Redis 持久化配置(redis.conf)
# RDB 快照
save 900 1
save 300 10
save 60 10000
# AOF 日志
appendonly yes
appendfsync everysec
Memcached 不支持持久化,服务器重启后所有缓存数据丢失。如果你的应用需要缓存数据的持久性(如会话存储),Redis 是唯一的选择。
八、适用场景
选择 Redis
- 需要丰富数据结构(哈希、列表、集合、排行榜)。
- 缓存数据需要持久化(会话存储、任务队列)。
- 需要发布/订阅消息功能。
- 需要原生集群和主从复制。
选择 Memcached
- 纯粹的简单键值缓存需求。
- 需要多线程充分利用多核 CPU。
- 缓存大量小对象(如 HTML 片段缓存)。
- 已有依赖 Memcached 的遗留系统。
总结
Redis 功能远比 Memcached 丰富,几乎可以覆盖 Memcached 的所有使用场景,同时提供更多高级功能。对于搬瓦工 VPS 上的新项目,推荐优先选择 Redis。Memcached 仍然在特定场景下有其价值,特别是在大规模纯缓存场景中的多线程优势。选购搬瓦工请访问 全部方案,使用优惠码 NODESEEK2026 享 6.77% 折扣,通过 bwh81.net 进入官网。