近期 整理的 关于Redis mongoDB memcache 对比

 

Redis

mongoDB

memcache

性能

都比较高,性能对我们来说应该都不是瓶颈。

操作的便利性

稍微丰富一点,提供list,set, hash 等数据结构的存储

最像关系型数据库,数据类型非常丰富

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

内存大小和数据量大小

Redis可以针对key-value设置过期时间,

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

可以修改最大可用内存,采用 LRU 算法。Memcached 代理软件 magent,比如建立 10 台 4G 的 Memcache 集群,就相当于有了 40G。

单点问题

Redis依赖客户端实现分布式读写分离,主从复制时,每次从节点重新连接主节点的时候,都依赖整个快照,无增量复制,性能比较差。也不支持自动sharding,需要设置一定的hash机制。不过,有解决方案:不用redis本身的复制机制,采用自己做主动复制(多分储存),或者改成增量复制等方式

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

这个就不用担心了。本身就没有数据冗余机制。采用成熟的hash或者环状算法轻松搞定单点问题。

可靠性(持久化)

Redis支持快照·Aof技术。依赖快照对数据进行持久化操作。当然了,这对性能有点影响。

采用binlog(二进制日志) 方式支持持久化的可靠性。

不支持

事务支持

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

mongoDB 不支持事务

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

应用场景

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

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

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

posted @ 2016-10-27 18:19  关关雎鸠,在广州  阅读(265)  评论(0编辑  收藏  举报