共同点:
1.Memcached与Redis都属于内存内、键值数据存储方案,都是nosql数据库中的杰出代表。
2.几乎所有主流程序设计语言都有支持memcached和redis的客户端库,上手容易,门槛极低。
3.两者都是数据存储于内存,这也导致两者几乎有相同的特征(与指标)表现、负载的数据吞吐量与延迟状况。
区别:
1.Memcached将键名限制在250字节,值也被限制在不超过1MB, Redis的键名和值都最大支持512M。
2.Memcached只支持k/v类型存储,Redis不仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储。
3.Memcached无数据持久性方案,Redis可持久化到磁盘。
4.Memcache服务重启后,数据不可恢复; redis数据丢失后可以通过aof恢复。
4.Memcached不支持主从,Redis能够提供复制功能,支持主从。
5.Memcached的数据回收机制使用的是LRU(即最低近期使用量)算法,Redis采用的数据回收机制,允许细粒度控制过期缓存,在必要时将旧数据从内存中删除。
6.Memcached没有身份验证,Redis虽然默认无身份验证,但是它支持身份验证。
7.Memcached的最大过期时间是一个月,Redis没有最大过期时间限制,可持久存储。
8.Redis是单线程,Memcached是多线程。
9.Memcached的过期策略是惰性删除,Redis的过期策略是惰性删除+定期删除。
选型:
因为Memcache是多线程,若是仅当缓存,读取key-value数据,建议用Memcache。
若是要支持数据持久化,多数据类型(如集合、列表,哈希等),就用Redis。