直接回答

核心区别:Redis 支持丰富的数据结构(String/Hash/List/Set/ZSet 等)和持久化(RDB/AOF),还支持主从复制、集群、Lua 脚本、发布订阅等;Memcached 只支持简单 key-value 字符串,无持久化、无复制,是纯内存缓存。功能上 Redis 是超集,Memcached 只在极简缓存场景凭借多线程模型有一席之地。

展开解析

| 维度 | Redis | Memcached | |---|---|---| | 数据结构 | 多种 | 仅字符串 | | 持久化 | RDB/AOF | 无 | | 高可用 | 主从+哨兵/Cluster | 客户端一致性哈希 | | 线程模型 | 主流程单线程(6.0 网络 IO 多线程) | 多线程 | | 单 value 上限 | 512MB | 1MB | | 附加能力 | Lua、事务、过期策略、Stream | 基本无 |

线程模型是常见误区:Redis 的单线程指命令执行主流程,避免了锁竞争;而网络读写和命令执行都在内存中完成,瓶颈通常在带宽而非 CPU。Memcached 多线程可利用多核,但没有持久化和复制意味着节点挂了缓存全丢,雪崩风险大。

实践中新项目基本选 Redis——数据结构能直接表达业务(计数器、排行榜、队列),生态和运维工具也成熟得多。