MongoDB与Redis的比较
Posted 超越梦想
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB与Redis的比较相关的知识,希望对你有一定的参考价值。
MongoDB和Redis都是NoSQL,采用结构型数据存储。二者在使用场景中,存在一定的区别,这也主要由于二者在内存映射的处理过程,持久化的处理方法不同。
MongoDB建议集群部署,更多的考虑到集群方案,Redis更偏重于进程顺序写入,虽然支持集群,也仅限于主-从模式。
比较指标 | MongoDB(v2.4.9) | Redis(v2.4.17) | 比较说明 |
实现语言 | c++ | c/c++ | - |
协议 | BSON,自定义二进制 | 类telnet | - |
性能 | 依赖内存,TPS较高 | 依赖内存,TPS非常高 | Redis优于MongoDB |
可操作性 | 丰富的数据表达,索引;最类似于关系型数据库,支持丰富的查询语句 | 数据丰富,较少的IO | MongoDB优于Redis |
内存及存储 | 适合大数据量存储,依赖系统虚拟内存,采用镜像文件存储;内存占用率比较高,官方建议独立部署在64位系统 | Redis2.0后支持虚拟内存特性(VM) 突破物理内存限制;数据可以设置时效性,类似于memcache | 不同的应用场景,各有千秋 |
可用性 | 支持master-slave,replicatset(内部采用paxos选举算法,自动故障恢复),auto sharding机制,对客户端屏蔽了故障转移和切片机制 | 依赖客户端来实现分布式读写;主从复制时,每次从节点重新连接主节点都要依赖整个快照,无增量复制;不支持auto sharding,需要依赖程序设定一致性hash机制 | MongoDB优于Redis;单点问题上,MongoDB应用简单,相对用户透明,Redis比较复杂,需要客户端主动解决.(MongoDB一般使用replicasets和sharding相结合,replicasets侧重高可用性以及高可靠,sharding侧重性能,水平扩展) |
可靠性 | 从1.8版本后,采用binlog方式(类似mysql) 支持持久化 | 依赖快照进行持久化;AOF增强可靠性;增强性的同时,影响访问性能 |
|
一致性 | 不支持事务,靠客户端保证 | 支持事务,比较脆,仅能保证事务中的操作按顺序执行 | Redis优于MongoDB |
数据分析 | 内置数据分析功能(mapreduce) | 不支持 | MongoDB优于Redis |
应用场景 | 海量数据的访问效率提升 | 较小数据量的性能和运算 | MongoDB优于Redis |
分类: Redis
http://www.cnblogs.com/chinesern/p/5581422.html
1\\redis和mongodb,mysql
Redis是完全在内存中保存数据的数据库,使用磁盘只是为了持久性目的,Redis数据全部存在内存,定期写入磁盘,当内存不够时,可以选择指定的LRU算法删除数据,持久化是使用RDB方式或者aof方式。
mongodb是文档型的非关系型数据库,MongoDB更类似MySQL,支持字段索引、游标操作,其优势在于查询功能比较强大,擅长查询JSON数据,能存储海量数据,但是不支持事务。
mongodb的所有数据实际上是存放在硬盘的,所有要操作的数据通过mmap的方式映射到内存某个区域内。
然后,mongodb就在这块区域里面进行数据修改,避免了零碎的硬盘操作。
至于mmap上的内容flush到硬盘就是操作系统的事情了,所以,如果,mongodb在内存中修改了数据后,mmap数据flush到硬盘之前,系统宕机了,数据就会丢失。
mysql:
无论数据还是索引都存放在硬盘中。到要使用的时候才交换到内存中。能够处理远超过内存总量的数据。
数据量和性能:
当物理内存够用的时候,redis>mongodb>mysql
当物理内存不够用的时候,redis和mongodb都会使用虚拟内存。
实际上如果redis要开始虚拟内存,那很明显要么加内存条,要么你换个数据库了。
但是,mongodb不一样,只要,业务上能保证,冷热数据的读写比,使得热数据在物理内存中,mmap的交换较少。
mongodb还是能够保证性能。有人使用mongodb存储了上T的数据。
mysql,mysql根本就不需要担心数据量跟内存的关系。
Redis 事务支持比较弱,只能保证事务中的每个操作连续执行
mongodb不支持事务
MongoDB 内置了数据分析的功能(mapreduce),Redis不支持
Redis只能使用单线程,性能受限于CPU性能
以上是关于MongoDB与Redis的比较的主要内容,如果未能解决你的问题,请参考以下文章
mongodb的ACID特性与mysql,redis简单比较
Memcache,Redis,MongoDB(数据缓存系统)方案对比与分析