redis、mongodb、memcache

1、性能redis

都比较高,性能对咱们来讲应该都不是瓶颈算法

整体来说,TPS方面Redismemcache差很少,要大于MongoDBmongodb

2、操做的便利性数据库

      memcache数据结构单一(key-value)缓存

      redis支持的数据类型更多,数据操做方面,Redis更好一些,也能够在服务器端直接对数据进行丰富的操做,这样能够减小网络IO次数和数据体积,同时还提供String、Hash、List、Set和Sorted Set等数据结构的存储。 安全

       mongodb支持丰富的数据表达,索引,最相似关系型数据库,支持的查询语言很是丰富服务器

3、内存空间的大小和数据量的大小网络

       redis2.0版本后增长了本身的VM特性,突破物理内存的限制, 能够限定内存使用大小,当数据超过阈值,则经过相似LRU的算法把内存中的最不经常使用数据保存到硬盘的页面文件中;能够对key value设置过时时间(相似memcache);Redis一个value最大支持512MB。  数据结构

       memcache能够修改最大可用内存,采用LRU算法; Memcached单个key-value大小有限,一个value最大只支持1MB。 并发

       mongoDB适合大数据量的存储,依赖操做系统VM作内存管理,吃内存也比较厉害,服务不要和别的服务在一块儿

4、可用性(单点问题)

redis依赖客户端来实现分布式读写;主从复制时,每次从节点从新链接主节点都要依赖整个快照,无增量复制,因性能和效率问题,因此单点问题比较复杂;不支持自动sharding,须要依赖程序设定一致hash机制。

一种替代方案是,不用redis自己的复制机制,采用本身作主动复制(多份存储),或者改为增量复制的方式(须要本身实现),一致性问题和性能的权衡

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

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

5可靠性(持久化)

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

         redis具备持久化机制,能够按期将内存中的数据持久化到硬盘上,Redis 支持(快照、AOF),依赖快照进行持久化,aof 加强了可靠性的同时,对性能有所影响

         memcache不支持,一般用在作缓存,提高性能;

          MongoDB1.8版本开始采用binlog方式支持持久化的可靠性

6、数据一致性(事务支持)

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

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

        mongoDB不支持事务

7、数据分析

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

8、应用场景

        redis:适用于对读写效率要求都很高,数据处理业务复杂和对安全性要求较高的系统;数据量较小的更性能操做和运算,Redis 只使用单核,而 Memcached 可使用多核,因此平均每个核上Redis在存储小数据时比Memcached性能更高。 

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

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

PS:MongoDB和Redis都是NoSQL,采用结构型数据存储。两者在使用场景中,存在必定的区别,这也主要因为两者在内存映射的处理过程,持久化的处理方法不一样。MongoDB建议集群部署,更多的考虑到集群方案,Redis更偏重于进程顺序写入,虽然支持集群,也仅限于主-从模式。

相关文章
相关标签/搜索