ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MongoDB与Redis区别

2022-07-23 15:01:42  阅读:169  来源: 互联网

标签:文件 调用 映射 区别 MongoDB Redis 内存 mmap 数据


简介:

1、MongoDB更类似于Mysql,支持字段索引,游标等操作,其优势在于查询功能强大, 擅长JSON数据,能够存储海量数据,不支持事务。

2、Mysql在大数据量时效率显著下降,MongoDB更多作为关系数据库的一种替代。

内存管理机制

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

MongoDB数据存在内存,由Linux的mmap映射文件技术实现。当内存不够时,只将热点数据放入内存,其他数据存在磁盘。

(mmap()系统调用使得进程之间通过映射同一个普通文件实现共享内存。普通文件被映射到进程地址空间后,进程可以像访问普通内存一样对文件进行访问,不必再调用read(),write()等操作。)

持久化机制:

Mongdb所有数据实际上是放在硬盘上的,所有要操作的数据通过mmap的方式映射到内存某个区域的。

mongodb避免了零碎的硬盘操作。

至于mmap上的内容flush到硬盘就是操作系统的事情了,所以,如果,mongodb在内存中修改了数据后,mmap数据flush到硬盘之前,系统宕机了,数据就会丢失。

mmap 系统调用使得进程之间通过映射同一个普通文件实现共享内存。普通文件被映射到进程地址空间后,进程可以像访问普通内存一样对文件进行访问,不必再调用。 read(),write()等操作。mmap并不分配空间, 只是将文件映射到调用进程的地址空间里, 然后你就可以用memcpy等操作写文件, 而不用write()了.写完后用msync()同步一下, 你所写的内容就保存到文件里了. 不过这种方式没办法增加文件的长度, 因为要映射的长度在调用mmap()的时候就决定了。)

 

 

 

 

 

 

 

 

 

 

 

标签:文件,调用,映射,区别,MongoDB,Redis,内存,mmap,数据
来源: https://www.cnblogs.com/Alei777/p/16512036.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有