介绍 | Redis 是内存中的数据结构存储,用作数据库,缓存和消息代理。 | MongoDB 是遵循文档存储结构的最流行的 NoSQL 数据库之一。 |
主数据库模型 | Redis 遵循键值存储模型。 | MongoDB 遵循文档存储模型。 |
许可 | Redis 是基于订阅和开源的。 | MongoDB 可以免费使用和开源。 |
实现语言 | Redis 是用 C 语言编写和实现的。 | MongoDB 是用 C ++语言编写和实现的。 |
二级索引 | 没有 | 是 |
API 和其他访问方法 | Redis 遵循专有协议。 | MongoDB 遵循使用 JSON 的专有协议。 |
服务器端脚本 | LUA | JavaScript 的 |
分区方法 | Redis 使用 Sharding 进行分区。 | MongoDB 也使用 Sharding 进行分区。 |
复制方法 | Redis 遵循主从复制。 | MongoDB 也遵循主从复制。 |
可操作性 | 数据操作方面,redis更好一些,较少的网络IO次数 | 支持丰富的数据表达,索引,最类似关系型数据库,支持的查询语言非常丰富 |
MapReduce | 没有 | 是 |
一致性概念 | 最终的一致性和即时一致性 | 最终的一致性 |
交易概念 | 乐观锁定,命令块和脚本的原子执行。 | 没有 |
性能 | 依赖内存,TPS较高 | 依赖内存,TPS较高 |
高并发 | 50个并发执行100000 个请求,读的速度是110000 次/s,写的速度是81000次/s | 善于处理高并发 |
持久化 | 支持持久化操作,可以进行aof及rdb数据持久化到磁盘,从而进行数据备份或数据恢复等操作,较好的防止数据丢失的手段。 | 数据操作会先写入内存,然后再会持久化到硬盘中去,mongodb在启动时,专门初始化一个线程不断循环(除非应用crash掉),用于在一定时间周期内来从defer队列中获取要持久化的数据并写入到磁盘的journal(日志)和mongofile(数据)处,当然因为它不是在用户添加记录时就写到磁盘上,所以按mongodb开发者说,它不会造成性能上的损耗,因为当进行CUD操作时,记录(Record类型)都被放入到defer队列中以供延时批量(groupcommit)提交写入,但相信其中时间周期参数是个要认真考量的参数,系统为90毫秒,如果该值更低的话,可能会造成频繁磁盘操作,过高又会造成系统宕机时数据丢失过。 |
内存与数据量 | redis在2.0版本后增加了自己的VM特性,突破物理内存的限制;可以对key value设置过期时间(类似memcache) | 适合大数据量存储,依赖系统虚拟内存管理,采用镜像文件存储;内存占有率比较高,官方建议独立部署在64位系统(32位有最大2.5G文件限制,64位没有改限制) |
内存管理 | Redis 数据全部存在内存,定期写入磁盘,当内存不够时,可以选择指定的 LRU 算法删除数据。 | MongoDB 数据会优先存于内存,当内存不够时,只将热点数据放入内存,其他数据存在磁盘。 |
可用性 | 依赖客户端来实现分布式读写;主从复制时,每次从节点重新连接主节点都要依赖整个快照,无增量复制;不支持自动sharding,需要依赖程序设定一致hash机制 | 支持master-slave,replicaset(内部采用paxos选举算法,自动故障恢复),auto sharding机制,对客户端屏蔽了故障转移和切分机制 |
用户权限 | 简单的基于密码的访问控制。 | 用户和角色的访问权限。 |
特色 | Redis 被评为世界上最快的数据库。它降低了应用程序的复杂性,简化了开发,加快了产品上市时间,并通过其有远见的数据结构和模块为开发人员提供了前所未有的灵 | MongoDB 被认为是下一代数据库。它成功地帮助许多企业通过提供大数据来改变他们的行业。世界上最先进的组织,从最前沿的创业公司到最大的公司,使用 MongoDB 以极低的成本创建前所未有的应用程序。 |
比较优势 | Redis 是一种内存数据库平台,支持各种数据结构,如字符串,散列,集合,列表,有序集,位图,超级日志和地理空间索引。Redis 通过监督分片,重新分片,迁移的所有操作,以完全自动化的方式提供轻松扩展。它还包括持久性,即时自动故障检测,备份和恢复以及跨机架,区域,数据中心,区域和云平台的内存复制。 | MongoDB 提供了当今最好的传统数据库以及当今应用程序所需的灵活性,扩展性和性能。MongoDB 是一个巨大的想法数据库。MongoDB 保留了 Relational 数据库最有价值的特性,即强一致性,表达式查询语言和二级索引。它有助于开发人员比 NoSQL 数据库更快地构建功能强大的应用程序 |
市场指标 | Redis Labs 由全球 60000 多家客户组成,在 NoSQL,内存和运营数据库方面的顶级分析报告中一直名列前茅。Redis 被评为否。1 个云数据库,Docker 中的 1 号数据库,1 号 NoSQL 数据存储区,容器中最流行的 NoSQL 数据库。 | 下载量达到 2000 万(每天下载量达到数千次)。超过 2,000 名客户,包括超过三分之一的财富 100 强。在 Forrester Wave 中被评为领导者:大数据 NoSQL,2016 年第 3 季度。在数据库引擎排名中排名最高的非关系型数据库 |