关于Redis和Memcache在应用中,均可以实现缓存的功能,可是,具体使用状况须要根据具体业务场景,尤为是对缓存数据有特性要求时,须要选择对应的缓存机制。算法
共同点:数据库
都是基于内存的数据库,可用做缓存机制缓存
区别:session
一、关于数据类型:Memcache只支持简单的Key/Value数据结构;Redis支持的数据结构相对较多,如String、List、Set、zSet等。数据结构
二、是否支持持久化数据:Memcache数据存放在内存中,没法持久化,在重启后数据丢失;Redis可实现数据持久化到硬盘(RDB)或记录操做日志(AOF),在重启后能够实现数据恢复功能。多线程
三、关于对集群的支持:Memcache经过Hash算法,在客户端作集群支持;Redis淘工做Reolication进行数据复制,支持master-slave机制,实现的事基于服务端的集群支持。并发
四、关于性能:因为写入都是直接到内存,差异不会太大,可是在读操做上,若是数据量相对较大,Memcache相对可能更强(只是我的猜想,未进行验证测试)。微服务
五、线程问题:Memcache是多线程模型,主线程和work线程分开,前者负责监听请求,并将具体的执行处理交给work线程;Redis单线程,串行执行,并发状况下数据一致性有保障。性能
在项目具体应用中,前期尝试过Memcache实现缓存,但后期仍是决定选用Redis,缘由是项目背景是微服务模式,Redis实现session共享以及基础数据缓存相对更加有优点。测试