本文总结了分布式缓存Redis与Memcached之间的相同点和区别(重点)。
共同点
- 都是基于内存的数据库,一般都用来当做缓存使用
- 都有过期策略
- 两者的性能都非常高
区别
- Redis支持更丰富的数据类型(支持更复杂的应用场景),它支持5中数据类型:字符串String,列表List,散列Hash,集合Set,有序集合ZSet(sorted set),而Memcached仅支持字符串类型;
- Redis支持数据的持久化(RDB快照和AOF日志),可以将内存中的数据存储在磁盘中,重启的时候可以再次加载并使用,而Memcached把数据全部放在内存中;
- Redis有灾难恢复机制;
- Redis在服务器内存使用完后,可以将不用的数据放在磁盘上;而Memcached在服务器内存使用完后会直接报异常;
- Memcached没有原生的集群模式,需要依靠客户端来实现往集群中分片写数据;但是Redis具有原生的cluster模式;
- Memcached是多线程、非阻塞IO复用的网络模型;Redis使用单线程、多路IO复用模型;
- Redis知识发布订阅模型、Lua脚本、事务等功能,而Memcached不支持,并且Redis支持更多的编程语言;
- Memcached过期数据的删除策略只用了惰性删除,而Redis同时使用了惰性删除和定期删除;
- Memcached不支持分布式而Redis支持分布式