redis和mongodb的区别在于以下几个方面:1、性能;2、操作的便利性;3、内存空间的大小和数据量的大小;4、可用性(单点问题);5、可靠性(持久化);6、数据一致性(事务支持);7、数据分析;8、应用场景。性能是指,总体来讲,TPS方面redis要大于mongodb。
一、性能
都比较高,性能对我们来说应该都不是瓶颈。
总体来讲,TPS方面redis要大于mongodb。
二、操作的便利性
redis丰富一些,数据操作方面,redis更好一些,较少的网络IO次数。
mongodb支持丰富的数据表达,索引,最类似关系型数据库,支持的查询语言非常丰富。
三、内存空间的大小和数据量的大小
redis在2.0版本后增加了自己的VM特性,突破物理内存的限制;可以对key value设置过期时间(类似memcache)
mongoDB适合大数据量的存储,依赖操作系统VM做内存管理,吃内存也比较厉害,服务不要和别的服务在一起。
四、可用性(单点问题)
对于单点问题,
redis,依赖客户端来实现分布式读写;主从复制时,每次从节点重新连接主节点都要依赖整个快照,无增量复制,因性能和效率问题,所以单点问题比较复杂;不支持自动sharding,需要依赖程序设定一致hash 机制。
一种替代方案是,不用redis本身的复制机制,采用自己做主动复制(多份存储),或者改成增量复制的方式(需要自己实现),一致性问题和性能的权衡。
mongoDB支持master-slave,replicaset(内部采用paxos选举算法,自动故障恢复),auto sharding机制,对客户端屏蔽了故障转移和切分机制。
五、可靠性(持久化)
对于数据持久化和数据恢复,
redis支持(快照、AOF):依赖快照进行持久化,aof增强了可靠性的同时,对性能有所影响。
MongoDB从1.8版本开始采用binlog方式支持持久化的可靠性。
六、数据一致性(事务支持)
redis事务支持比较弱,只能保证事务中的每个操作连续执行。
mongoDB不支持事务。
七、数据分析
mongoDB内置了数据分析的功能(mapreduce),其他不支持。
八、应用场景
redis:数据量较小的更性能操作和运算上。
MongoDB:主要解决海量数据的访问效率问题。
延伸阅读
mongodb的优势
mongodb的优势就是文档存储:
1. 业务经常变动,需要不时的添加字段,那么mongodb比较适合,关系型数据库添加字段的复杂度也还好
2. 嵌套文档,业务数据比较复杂,适合嵌套文档式存储,那么mongodb非常合适,这个关系型数据库比较难搞,虽然MySQL和pg也有文档存储,但MySQL的不成熟,pg毕竟现在生产中使用还是偏少,个人也不了解,这里不谈。但这不仅仅这一点优势,具体下面会细说。
3. upsert支持,查询速度也不慢
4. 高可用的副本集支持
5. 查询语法非常丰富,嵌套文档查询功能非常强大,不是重度用户可能不能理解
mongodb特点
它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:
1.面向集合存储,易存储对象类型的数据。
2.模式自由。
3.支持动态查询。
4.支持完全索引,包含内部对象。
5.支持查询。
6.支持复制和故障恢复。
7.使用高效的二进制数据存储,包括大型对象(如视频等)。
8.自动处理碎片,以支持云计算层次的扩展性。
9.支持RUBY,PYTHON,JAVA,C ,PHP,C#等多种语言。
10.文件存储格式为BSON(一种JSON的扩展)。
11.可通过网络访问。
文章标题:redis和mongodb的区别是什么,发布者:小编,转载请注明出处:https://worktile.com/kb/p/38954