MongoDB和Redis的区别(6大区别详解)

MongoDB和Redis的区别(6大区别详解)-mikechen

MongoDB和Redis经常都使用到,但很多并比了解MongoDB和Redis的区别,下面重点详解MongoDB和Redis的区别。

1.内存管理机制区别

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

MongoDB 数据存在内存,当内存不够时,只将热点数据放入内存,其他数据存在磁盘。

 

2.支持数据结构区别

Redis数据类型比较丰富,包括:string、hash、set、sorted set、list等。

如下图所示:

MongoDB和Redis的区别(6大区别详解)-mikechen

MongoDB 数据结构比较单一,MongoDB文档存储是使用BSON类型,但是支持丰富的数据表达,支持的查询语言非常丰富。

 

3.应用场景的区别

Redis的应用场景较多,比如:

  1. Redis用作缓存:由于内存的操作,可以减少数据库频繁访问读取的压力。
  2. Redis分布式锁:分布式锁的方案很多,基于Redis实现的分布式锁一般用得最多。
  3. Redis用于计数器 :基于incr原理每次访问不断累加,可以统计网站访问量,阅读量,点击量等。
  4. Redis用于分布式限流 :基于incr和expire原理 通过累计单位时间请求次数达到限流。
  5. Redis还可以用于发布订阅,类似若消息队列。

 

MongoDB的应用场景,比如:

  1. 网站数据:MongoDB 非常适合实时的插入,更新与查询;
  2. 用于对象及 JSON 数据的存储:MongoDB 的 BSON 数据格式,非常适合文档化格式的存储及查询;
  3. 高伸缩性的场景:MongoDB 非常适合由数百台服务器组成的数据库,可扩展性比较强;

 

4.数据量和性能区别

当物理内存够用的时候,性能:redis>mongodb。

当物理内存不够用的时候,redis和mongodb都会使用虚拟内存,但是mongodb mmap的交换较少,mongodb还是能够保证性能,mongodb>redis。

 

5.可靠性区别

mongodb采用Journaling日志,实际上像mysql的bin log日志,通过这种方式来实现支持持久化,增加可靠性。

Redis赖快照进行持久化,采用RDB(Redis Data Base) 内存快照,以及AOF(Append Only File) 增量日志来实现持久化。

Redis4.0 后大部分的使用场景都不会单独使用 RDB 或者 AOF 来做持久化机制,而是兼顾二者的优势混合使用。

 

6.集群区别

MongoDB 集群技术比较成熟,Redis从3.0开始支持集群。

以上就是6点MongoDB和Redis的区别,希望对你掌握MongoDB和Redis有所帮助。

mikechen睿哥

mikechen睿哥,十余年BAT架构经验,资深技术专家,就职于阿里、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法