Redis 和 MongoDB 的优缺点

MongoDB 和 Redis 都是 NoSQL,采用结构型数据存储。二者在使用场景中,存在一定的区别, 这也主要由于二者在内存映射的处理过程,持久化的处理方法不同。MongoDB 建议集群部署,更多的考虑到集群方案,Redis 更偏重于进程顺序写入,虽然支持集群,也仅限于主-从模式。

Redis

优点:

1、读写性能优异
2、支持数据持久化,支持 AOF 和 RDB 两种持久化方式
3、支持主从复制,主机会自动将数据同步到从机,可以进行读写分离。
4、数据结构丰富:数据结构丰富:支持 string、hash、set、sortedset、list 等数据结构。

缺点:

1、Redis 不具备自动容错和恢复功能,主机从机的宕机都会导致前端部分读写请求失败,需要等待机器重启或者手动切换前端的 IP 才能恢复。
2、 主机宕机,宕机前有部分数据未能及时同步到从机,切换 IP 后还会引入数据不一致的问题,降低了系统的可用性。
3、Redis 的主从复制采用全量复制,复制过程中主机会 fork 出一个子进程对内存做一份快照, 并将子进程的内存快照保存为文件发送给从机,这一过程需要确保主机有足够多的空余内存。若快照文件较大,对集群的服务能力会产生较大的影响,而且复制过程是在从机新加入 集群或者从机和主机网络断开重连时都会进行,也就是网络波动都会造成主机和从机间的一 次全量的数据复制,这对实际的系统运营造成了不小的麻烦。
4、 Redis 较难支持在线扩容,在集群容量达到上限时在线扩容会变得很复杂。为避免这一问题,运维人员在系统上线时必须确保有足够的空间,这对资源造成了很大的浪费。

MongoDB

优点:

1、弱一致性(最终一致),更能保证用户的访问速度

2、文档结构的存储方式,能够更便捷的获取数
3、内置 GridFS,高效存储二进制大对象 (比如照片和视频)

4、内置Sharding。提供基于Range的Auto Sharding机制:一个collection可按照记录的范围,分成若干个段,切分到不同的Shard上。

5、第三方支持丰富。(这是与其他的NoSQL相比,MongoDB也具有的优势)

6、性能优越:在使用场合下,千万级别的文档对象,近10G的数据,对有索引的ID的查询不会比mysql慢,而对非索引字段的查询,则是全面胜出。 

 

缺点: 

1、mongodb不支持事务操作。所以事务要求严格的系统(如果银行系统)肯定不能用它。(这点和优点①是对应的)
2、mongodb占用空间过大。
3、MongoDB没有如MySQL那样成熟的维护工具,这对于开发和IT运营都是个值得注意的地方。

猜你喜欢

转载自www.cnblogs.com/Jack666/p/9859040.html