mongodb 是一个基于文档的数据库,所有数据是从磁盘上进行读写的。MongoDB善长的是对无模式JSON数据的查询。
而Redis是一个基于内存的键值数据库,它由C语言实现的,与Nginx/ NodeJS工作原理近似,同样以单线程异步的方式工作,先读写内存再异步同步到磁盘,读写速度上比MongoDB有巨大的提升。因此目前很多超高并发的网站/应用都使用Redis做缓存层,普遍认为其性能明显好于MemoryCache。当并发达到一定程度时,即可考虑使用Redis来缓存数据和持久化Session。
memcached:单一键值对内存缓存的,做对象缓存无可替代的分布式缓存;
redis:是算法和数据结构的集合,快速的数据结构操作是他最大的特点,支持数据持久化;
mongodb是bson结构、介于rdb和nosql之间的,更松散更灵活的,但是不支持事务,只用作非重要数据存储。
nosql not only sql 指泛非关系型数据库
redis 和 memcache 都是好的缓存方案,各有各的优缺点
redis最强的地方是有比较丰富的数据结构,可以在缓存层玩出很多花样,比如:通过列表做消息队列,通过mget,mset可以读多个值进行操作等等,sina,instagram都是比较好的利用了它的这些优点,单点问题没有太好的解决方案,有待提高
memcache的强项是分布式比较成熟,对多核cpu的应用,yutube,大多数电子商务网站都是它的用户,比较成熟,稳定。
mongodb 为代表的nosql应该是传统数据库的有益的补充,目前看来还无法取代他们地位,当今NoSQL领域中有很多有力的竞争者通过多种方式来处理海量数据问题。其中重要的解决方案之一就是MongoDB。MongoDB是面向文档的弱结构化存储方案,使用JSON格式来展现、查询和修改数据。