迅闻网
让更多人看到你

mongodb和redis的区别

  mongodb和redis的区别

MongoDB更相似MySQL,支撑字段索引、游标操作,其优势在于查询功用比较强壮,擅长查询JSON数据,能存储海量数据,可是不支撑业务。
MySQL在大数据量时功率显著下降,MongoDB更多时分作为联系数据库的一种代替。
Redis是一个开源(BSD许可)的,内存中的数据结构存储体系,它可以用作数据库、缓存和音讯中间件。它支撑多种类型的数据结构,如字符串(strings),散列(hashes),列表(lists),集合(sets),有序集合(sortedsets)与范围查询,bitmaps,hyperloglogs和地舆空间(geospatial)索引半径查询。Redis内置了复制(replication),LUA脚本(Luascripting),LRU驱动工作(LRUeviction),业务(transactions)和不同等级的磁盘持久化(persistence),并经过Redis哨兵(Sentinel)和自动分区(Cluster)供给高可用性(highavailability)
内存管理机制
Redis数据悉数存在内存,定时写入磁盘,当内存不行时,可以挑选指定的LRU算法删去数据。
MongoDB数据存在内存,由linux体系mmap完成,当内存不行时,只将热点数据放入内存,其他数据存在磁盘。
持久化方法:
mongodb的一切数据实际上是存放在硬盘的,一切要操作的数据经过mmap的方法映射到内存某个区域内。
然后,mongodb就在这块区域里面进行数据修正,避免了零碎的硬盘操作。
至于mmap上的内容flush到硬盘便是操作体系的工作了,所以,假如,mongodb在内存中修正了数据后,mmap数据flush到硬盘之前,体系宕机了,数据就会丢失。
(mmap体系调用并不是完全为了用于共享内存而设计的。它本身供给了不同于一般对一般文件的拜访方法,进程可以像读写内存相同对一般文件进行操作。
mmap体系调用使得进程之间经过映射同一个一般文件完成共享内存。一般文件被映射到进程地址空间后,进程可以像拜访一般内存相同对文件进行拜访,不必再调用。read(),write()等操作。mmap并不分配空间,仅仅将文件映射到调用进程的地址空间里,然后你就可以用memcpy等操作写文件,而不用write()了.写完后用msync()同步一下,你所写的内容就保存到文件里了.不过这种方法没办法增加文件的长度,由于要映射的长度在调用mmap()的时分就决定了。)

 

redis
redis:
它便是一个不折不扣的内存数据库了。
支撑的数据结构
Redis支撑的数据结构丰厚,包括hash、set、list等。
MongoDB数据结构比较单一,可是支撑丰厚的数据表达,索引,最相似联系型数据库,支撑的查询言语非常丰厚。
Mongodb与redis相比较:
mongoDB源码言语是C++,redis也是C或C++,
mongodb文件存储是BSON格式相似JSON,或自定义的二进制格式。
mongodb与redis功用都很依靠内存的巨细,mongodb有丰厚的数据表达、索引;最相似于联系数据库,支撑丰厚的查询言语,redis数据丰厚,较少的IO,这方面mongodb优势明显。
mongodb不支撑事物,靠客户端本身确保,redis支撑事物,比较弱,仅能确保事物中的操作按顺序执行,这方面redis优于mongodb。
mongodb对海量数据的拜访功率提高,redis较小数据量的功用及运算,这方面mongodb功用优于redis.monbgodb有mapredurce功用,供给数据分析,redis没有,这方面mongodb优于redis。
数据量和功用:
当物理内存够用的时分,redis>mongodb>mysql
当物理内存不行用的时分,redis和mongodb都会使用虚拟内存。
实际上假如redis要开端虚拟内存,那很明显要么加内存条,要么你换个数据库了。
可是,mongodb不相同,只需,业务上能确保,冷热数据的读写比,使得热数据在物理内存中,mmap的交流较少。
mongodb仍是可以确保功用。
功用
二者功用都比较高,应该说都不会是瓶颈。
可靠性
二者均支撑持久化。
业务支撑状况
Redis业务支撑比较弱,只能确保业务中的每个操作接连执行
mongodb不支撑业务
集群
MongoDB集群技术比较成熟,Redis从3.0开端支撑集群。

未经允许不得转载:迅闻网 » mongodb和redis的区别
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

迅闻网-让更多人看到你

登录/注册返回首页