Redis和MongoDB数据库的比较

2018-8-21 一诺 服务器

相同点
都是非关系型数据库
能都比较高、均支持持久化
源码语言类似都是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
最佳应用场景:适用于数据变化快且数据库大小可遇见(适合内存容量)的应用程序。
例如:微博、数据分析、实时数据搜集、实时通讯等。

标签: 数据库

分享这篇文章
赞助鼓励:如果觉得内容对您有所帮助,您可以支付宝(左)或微信(右):

声明:如无特殊注明,所有博客文章版权皆属于作者,转载使用时请注明出处。谢谢!

发表评论:

皖ICP备15010162号-1 @2015 勿恨水长东
qq:1614245331 邮箱:13515678147@163.com Powered by emlog