您的位置:首页 > 数据库 > Redis

redis,mongodb,mencache之间的区别及其使用场景

2018-09-03 19:21 218 查看

1.从性能的角度来看,3个作为数据库并没有太多的区别,实在要区别的话,redis和mencache的性能要比mongodb要好、

2.从使用上来说,mencache存储的数据结构比较单一.而redis的存储结构则更加丰富,不仅仅限于字符串,redis支持string,

hash,list,set和zset等数据类型。mongodb支持丰富的数据索引以及查询,与关系型数据库mysql最类似,支持的增删改查十分

完善.

3.内存空间的大小以及数据量的大小

redis在2.0之后添加引入了VM特性,不仅突破了物理内存,还可以对过期时间进行了设置.

mencache可以通过算法来修改自己的最大内存.

mongodb依赖操作系统VM做内存,适合大量数据的存储,但是吃内存也十分严重,我们一般把mongodb作为一个单独的服务.

4.对于它们的可用性来说

redis依赖客户端来实现分布式读写,主从复制时,每次从节点重新连接主节点都要依赖整个快照,无增量复制,因影响了性能和效率问题,所以单点问题比较复杂;不支持自动sharding,需要依赖程序设定一致hash 机制。一种替代方案是,不用redis本身的复制机制,采用自己做主动复制(多份存储),或者改成增量复制的方式(需要自己实现),一致性问题和性能的权衡

Memcache本身没有数据冗余机制,也没必要;对于故障预防,采用依赖成熟的hash或者环状的算法,解决单点故障引起的抖动问题。

mongoDB支持master-slave,replicaset(内部采用paxos选举算法,自动故障恢复),auto sharding机制,对客户端屏蔽了故障转移和切分机制。

5.持久化

对于数据持久化和数据恢复,

         redis支持(快照、AOF):依赖快照进行持久化,aof增强了可靠性的同时,对性能有所影响

          memcache不支持,通常用在做缓存,提升性能;

          MongoDB从1.8版本开始采用binlog方式支持持久化的可靠性

6.事务的控制

        Memcache 在并发场景下,用cas保证一致性

        redis事务支持比较弱,只能保证事务中的每个操作连续执行

        mongoDB不支持主事务,他只支持行级的事务,需要事务的话,得自己用代码实现二次提交作,模拟事务的功能.

7、数据分析

         mongoDB内置了数据分析的功能(mapreduce),其他不支持

8、应用场景

        redis:数据量较小的更性能操作和运算上

        memcache:用于在动态系统中减少数据库负载,提升性能;做缓存,提高性能(适合读多写少,对于数据量比较大,可以采用sharding)

        MongoDB:主要解决海量数据的访问效率问题

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: