Redis 与Memcached 的对比
Redis与Memcached对比表
特性 | Redis | Memcached |
---|---|---|
数据类型 | 支持多种数据结构(字符串、哈希、列表、集合、有序集合等) | 文本,二进制类型 |
操作类型 | 单个操作,批量操作,事务支持(弱事务,结合Lua脚本),每个类型支持不同的CRUD | CRUD 少量其他命令 |
持久化 | 支持RDB快照和AOF日志两种持久化机制 | 不支持持久化,数据仅存储在内存中 |
性能 | 单线程模型,吞吐量高但受限于单核CPU | 多线程模型,可充分利用多核CPU,适合高并发场景 |
内存管理 | 支持内存淘汰策略(LRU、TTL等),可配置为持久化部分数据 | 纯内存缓存,依赖LRU自动淘汰机制 |
集群支持 | 原生支持Redis Cluster,支持分片和复制 | 无原生集群功能,需依赖客户端分片或第三方工具(如Twemproxy) |
事务支持 | 支持事务(MULTI/EXEC)和Lua脚本 | 不支持事务 |
适用场景 | 需要复杂数据结构、持久化或高可用性的场景(如排行榜、会话存储) | 简单键值缓存,追求极致性能且无需持久化的场景(如HTML片段缓存) |
网络模型 | 单线程I/O复用(非阻塞),避免锁竞争 | 多线程非阻塞I/O,适合处理大量小请求 |
附加功能 | 发布订阅、Streams、地理空间索引,主从高可用(哨兵,故障转移),序列化,Lua 脚本 | 无附加功能 |
关键区别说明
数据结构
Redis的哈希、有序集合等结构适合存储对象或排序数据,Memcached仅支持扁平化键值。
持久化
Redis的RDB快照适合备份,AOF日志保证数据安全;Memcached重启后数据丢失。
线程模型
Memcached多线程在高并发下性能更优,Redis单线程避免竞态但受限于单核。
扩展性
Redis Cluster支持动态扩缩容,Memcached需手动管理分片。