Redis是一个功能强大、性能高效的开源数据结构服务器,Redis最典型的应用是NoSQL。但事实上Redis除了做为NoSQL数据库使用以外,还能普遍应用消息队列,数据堆栈以及数据缓存等众多场合。Redis与Memcached相相似,都是以键值对(key-value)存放数据的,可是Redis支持的数据类型及特性远比Memcached丰富。数据库
在缓存应用方面,Redis一样也是一个内存数据库,拥有Memcached的快速、稳定等特性,而且支持数据快照功能,开发人员能够经过配置文件制定数据快照时间间隔,Redis会将数据快照自动存放于硬盘中,这样就算服务器忽然中止服务,Redis也极少会出现丢失数据的现象。因此近些年来愈来愈多的大型物联网公司开始使用Rdeis做为缓存服务器。缓存
相比于MongoDB,Redis是更加完全的Key-Value存储系统,它没有专门的查询语言,也没有明确的数据类型。一个字符串,能够代替全部的储存类型,例如直接使用string类型存放传统文本、代码、序列等;也能够直接存放数据流,例如图片、视频等,而且没有数据大小的限制。虽然没有数据类型的限制,单位了方便数据管理,Redis提供了多种数据结构类型,分别为string(字符串)、list(列表)、sets(集合)或者是ordered sets(有序集合)。全部的数据类型都支持push/pop、add/remove、服务端并集、交集、sets集合差异等操做,这些操做都具备原子性的,Redis还支持各类不一样的排序功能。安全
与Memcached同样,Redis的储存方式给予内存的,全部的数据读写都在内存中完成。单Memcache使用的libevent库,而Redis则原生使用epoll异步通讯模型,因此在性能上比Memcache更加优秀。同时,Redis还提供了Virtual Memory功能,使得数据可以在指定间隔时间内保存到硬盘(由后台自动完成),避免数据在内存中丢失。服务器
与MongoDB相比,Redis主要优势分别以下:数据结构
☞ Redis数据储存在内存中完成,因此在数度上比较有优点,MongoDB使用memory-mapped处理方式本质上仍是磁盘操做app
☞ Redis与MongoDB在设计之初均考虑到分布式处理能力,因此这二者都提供了集群部署配置接口,但相对而言Redis及所有输更加容积及稳定。异步
☞ Redis提供了简单的事务支持,MongoDB不支持事务。分布式
Redis并不是只有优势,也有缺点,这些缺点是明显的,分别以下:性能
☞ Redis没有字段的概念,因此在数据查询上功能比较弱,支持的特性比较简单。spa
☞ Redis单个value的最大容量可达1GB,虽然MongoDB单个文档最大容量为16MB,但MongoDB提供了GridFS用于实现超大文件存储。
☞ 因为Redis本质上是一个内存书库,因此内存硬件的容量大小直接决定了Redis可用的数据库空间(Redis2.0新增了Virtual Memory功能解决了容量问题,但虚拟内存本质上就是磁盘)。
☞ Redis虽然在内存中查询数据,但为了确保数据的安全,Redis默认状况下使用子线程对数据进行持久化处理,若是配置不当(默认刷新间隔为20秒),将会是系统运行效率拔苗助长。
☞ MongoDB提供了mapreduce数据分析功能,Redis则没有数据分析功能。