MongoDB和Redis的使用场景及特性
时间:2019-08-20 13:27 来源:linux.it.net.cn 作者:IT
MongoDB和Redis都是NoSQL,采用结构型数据存储。二者在使用场景中,存在一定的区别,这也主要由于二者在内存映射的处理过程,持久化的处理方法不同。 MongoDB建议集群部署,更多的考虑到集群方案,Redis更偏重于进程顺序写入,虽然支持集群,也仅限于主-从模式。
具体使用场景:Redis适合比如字典数据、关键词搜索历史、作为缓存查询,经常性访问和操作,MongoDB适合比如按月按周的统计数据、历史归档数据,作为数据库存储,数据量大便于查询。
比较指标
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
(责任编辑:IT)
MongoDB和Redis都是NoSQL,采用结构型数据存储。二者在使用场景中,存在一定的区别,这也主要由于二者在内存映射的处理过程,持久化的处理方法不同。 MongoDB建议集群部署,更多的考虑到集群方案,Redis更偏重于进程顺序写入,虽然支持集群,也仅限于主-从模式。 具体使用场景:Redis适合比如字典数据、关键词搜索历史、作为缓存查询,经常性访问和操作,MongoDB适合比如按月按周的统计数据、历史归档数据,作为数据库存储,数据量大便于查询。
(责任编辑:IT) |