知向前端
Redis和MongoDB数据库的比较
2018-8-21 Jon
相同点

都是非关系型数据库

能都比较高、均支持持久化

源码语言类似都是c和c++

均不适合需要使用复杂sql的操作和事务性系统



特点

redis

内存数据库(数据放在内存中,持久化是使用RDB或者aof)

支持丰富的数据结构,包括hash、set、list等。

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

可以用作数据库、缓存和消息中间件

MongoDB

数据实际上是存放在硬盘的(当内存不够时,热点数据放入内存,其他数据存在磁盘)

数据结构比较单一

但是支持丰富的数据表达,索引

最类似关系型数据库,支持的查询语言非常丰富

mongodb不支持事务

MongoDB占用空间过大

MongoDB没有成熟的维护工具

mongodb对海量数据的访问效率提升(作为关系型数据库的一种替代)

monbgodb 有mapredurce功能,提供数据分析



数据量和性能

当物理内存够用的时候 redis>mongodb>mysql

当物理内存不够用的时候,redis和mongodb都会使用虚拟内存。

实际上如果redis要开始虚拟内存,那很明显要么加内存条,要么你换个数据库了。

但是,mongodb不一样,只要,业务上能保证,冷热数据的读写比,使得热数据在物理内存中,mmap的交换较少。

mongodb还是能够保证性能。



内存管理机制

Redis 数据全部存在内存,定期写入磁盘,当内存不够时,可以选择指定的 LRU 算法删除数据。

MongoDB 数据存在内存,由 linux系统 mmap 实现,当内存不够时,只将热点数据放入内存,其他数据存在磁盘。








应用场景

MongoDB

适用于实时的插入、更新与查询的需求,并具备应用程序实时数据存储所需的复制及高度伸缩性;

非常适合文档化格式的存储及查询;

高伸缩性的场景:MongoDB 非常适合由数十或者数百台服务器组成的数据库。

对性能的关注超过对功能的要求。

Redis

最佳应用场景:适用于数据变化快且数据库大小可遇见(适合内存容量)的应用程序。

例如:微博、数据分析、实时数据搜集、实时通讯等。


发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容