MongoDB支持master-slave,replicaset(内部采用paxos选举算法,自动故障恢复),auto sharding机制,对客户端屏蔽了故障转移和切分机制 。
5.可靠性
Memcached不支持,通常用在做缓存,提升性能 。
Redis支持(快照、AOF):依赖快照进行持久化,aof增强了可靠性的同时,对性能有所影响 。
MongoDB从1.8版本开始采用binlog方式支持持久化的可靠性 。
6.一致性
Memcached在并发场景下,用cas保证一致性 。
Redis事务支持比较弱,只能保证事务中的每个操作连续执行 。
MongoDB不支持事务 。
7.数据分析
MongoDB内置了数据分析的功能(mapreduce),其他两者不支持 。
8.应用场景
Memcached:用于在动态系统中减少数据库负载,提升性能;做缓存,提高性能(适合读多写少,对于数据量比较大,可以采用sharding) 。
Redis:数据量较小的高性能操作和运算上 。
MongoDB:主要解决海量数据的访问效率问题 。
总结分析
1.若是简单的存取key-value(主要是读)这样的数据用Memcached好一些 。若是要支持数据持久化,量也不大,操作很频繁,多数据类型(如集合、散列之类的),用列表类型做队列之类的高级应用,就用Redis,但如果是数据量比较大时就采用MongoDB 。
2.Memcached的很多客户端更加成熟稳定,Redis协议比Memcached复杂 。Redis不可能比Memcached快?但是测试结果基本是Redis占绝对优势 。
3.云数据库Memcached版实例中的数据是存储在内存中的,当出现宕机、机房断电等意外,或是云数据库Memcached版实例在正常升级维护时,内存中的数据均会丢失 。因此,云数据库Memcached版不能作为持久化的数据存储服务使用 。Redis的数据都存放在内存中,如果没有配置持久化,Redis重启后数据就全丢失了,于是需要开启Redis的持久化功能,将数据保存到磁盘上,当Redis重启后,可以从磁盘中恢复数据,实现持久化 。
4.对于Redis和MongoDB来说,大家一般称之为Redis缓存、MongoDB数据库 。Redis主要把数据存储在内存中,其“缓存”的性质远大于其“数据存储“的性质,其中数据的增删改查也只是像变量操作一样简单;MongoDB却是一个“存储数据”的系统,增删改查可以添加很多条件,就像SQL数据库一样灵活 。
5.MongoDB和Redis都是NoSQL,采用结构型数据存储 。二者在使用场景中,存在一定的区别,这也主要由于二者在内存映射的处理过程,持久化的处理方法不同 。MongoDB建议集群部署,更多的考虑到集群方案,Redis更偏重于进程顺序写入,虽然支持集群,也仅限于主-从模式 。
推荐阅读
- MySQL的查询性能分析神器:explain命令的使用详解
- Linux命令存放目录bin的体系结构分析
- 抗氧化|抗衰老的精华液有哪几种比较好用
- 广州红碎茶的特征分析
- 科比·布莱恩特|美媒将科比和邓肯职业生涯成就进行比较,谁的职业生涯更成功
- 四种红碎茶的制作方法分析
- 抖音运营:用数据分析一个抖音号
- 红碎茶茶色的科学分析
- 科学分析红碎茶茶色
- 用哪种方法冲泡宜兴红茶 宜兴红茶如何冲泡比较好喝
