业务需求简单、只存放简单字符串、能接受数据丢失、追求极简架构,可选 Memcached;
存在复杂数据结构、需要持久化、分布式高可用或者各类拓展功能,推荐使用 Redis。目前绝大多数互联网项目优先选用 Redis。
1. 根据存储数据结构选择
如果业务只需要存储简单字符串、二进制数据,不需要集合、列表等复杂结构,二者都可选;如果需要存储对象、队列、排行榜、集合去重等数据,优先选择 Redis。Memcached 仅支持 String,复杂结构需要手动序列化,开发麻烦。
2. 根据数据可靠性需求选择
如果希望服务重启后数据不丢失,需要持久化机制,选择 Redis。Redis 支持 RDB、AOF 持久化;如果允许宕机丢失全部缓存数据,只做临时加速缓存,不需要持久化,Memcached 可以考虑。
3. 根据部署架构与高可用需求选择
项目后期需要分布式部署、自动故障转移、读写分离,优先 Redis。Redis 原生支持主从复制、哨兵、Cluster 集群;Memcached 没有原生主从和故障转移,集群依靠客户端哈希分片,运维难度更高,适合小型单机、简单缓存场景。
4. 根据业务功能需求选择
如果需要分布式锁、发布订阅、Lua 脚本、数据过期、限流计数器等高级功能,选用 Redis;仅做基础热点数据缓存,不需要任何拓展功能,可以选择 Memcached。