首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

面试被问到了Redis和MongoDB的区别?看这里就对了

看这里就对了 Mongodb与Redis应用指标对比 项目中用的是MongoDB,但是为什么用其实当时选型的时候也没有太多考虑,只是认为数据量比较大,所以采用MongoDB。...最近又想起为什么用MongoDB,就查阅一下,汇总汇总: 之前也用过redis,当时是用来存储一些热数据,量也不大,但是操作很频繁。...现在项目中用的是MongoDB,目前是百万级的数据,将来会有千万级、亿级。 就Redis和MongoDB来说,大家一般称之为Redis缓存、MongoDB数据库。...这也是有道有理有根据的,Redis主要把数据存储在内存中,其“缓存”的性质远大于其“数据存储“的性质,其中数据的增删改查也只是像变量操作一样简单; MongoDB却是一个“存储数据”的系统,增删改查可以添加很多条件...replicaset (内部采用 paxos 选举算法,自动故障恢复) , auto sharding 机制,对客户端屏蔽了故障转移和切分机制 依赖客户端来实现分布式读写;主从复制时,每次从节点重新连接主节点都要依赖整个快照

8400

存储优化(3)-mongo大表加索引

/#dbcmd.createIndexes 创建完索引后,通过客户端连接,查看执行计划,始终扫描一行。...清理掉执行计划缓存,执行操作 db.historyRecord.getPlanCache().clear() 继续观察,发现并没有什么用。...百思不得其解,在深入解析 MongoDB Plan Cache找到一些思路,MongoDB的执行计划 ? 其中扫描N次中N是10倍的执行计划缓存的索引扫描次数。...需要确保不会block表的其他操作,尽量选择空闲时候,以background方式创建 增加完索引后,需要check索引是否发挥作用,只是通过explain有可能误判,还是需要结合数据库的slowlog来判断...需要结合plan cache等情况来分析 修复数据库索引判断错误可以通过强制索引,或者调整语句引导数据库作出正确的判断。 参考 https://mongoing.com/archives/5624

2.8K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【83期】面试被问到了Redis和MongoDB的区别?看这里就对了

    来自:cnblogs.com/java-spring/p/9488227.html 项目中用的是MongoDB,但是为什么用其实当时选型的时候也没有太多考虑,只是认为数据量比较大,所以采用MongoDB...最近又想起为什么用MongoDB,就查阅一下,汇总汇总: 之前也用过redis,当时是用来存储一些热数据,量也不大,但是操作很频繁。...现在项目中用的是MongoDB,目前是百万级的数据,将来会有千万级、亿级。 就Redis和MongoDB来说,大家一般称之为Redis缓存、MongoDB数据库。...这也是有道有理有根据的,Redis主要把数据存储在内存中,其“缓存”的性质远大于其“数据存储“的性质,其中数据的增删改查也只是像变量操作一样简单; MongoDB却是一个“存储数据”的系统,增删改查可以添加很多条件...MongoDB语法与现有关系型数据库SQL语法比较: https://www.cnblogs.com/java-spring/p/9488200.html Mongodb与Redis应用指标对比 MongoDB

    55930

    面试官:说一下Redis和MongoDB的区别?

    项目中用的是MongoDB,但是为什么用其实当时选型的时候也没有太多考虑,只是认为数据量比较大,所以采用MongoDB。...最近又想起为什么用MongoDB,就查阅一下,汇总汇总: 之前也用过redis,当时是用来存储一些热数据,量也不大,但是操作很频繁。...现在项目中用的是MongoDB,目前是百万级的数据,将来会有千万级、亿级。 就Redis和MongoDB来说,大家一般称之为Redis缓存、MongoDB数据库。...这也是有道有理有根据的, Redis主要把数据存储在内存中,其“缓存”的性质远大于其“数据存储“的性质,其中数据的增删改查也只是像变量操作一样简单; MongoDB却是一个“存储数据”的系统,增删改查可以添加很多条件...id_mapper').aggregate([{$group:{ _id :"$contract_id",count:{$sum:1}}},{$match:{count:{$gt:1}}}]) 判断是否为空

    3.8K20

    MongoDB高并发性能问题解决方案

    客户端连接池优化 程序刚启动一个请求总共更新8次mongodb数据库花费时间100ms左右,后期随着并发数量增大时间随之到了500ms以上,可能是请求阻塞在了获取连接上,mongodb连接池数量太少 不够用...连接参数选项参数描述maxPoolSize连接池中的最大连接数。 默认值为 100。minPoolSize连接池中的最小连接数。默认值为 0。maxConnecting池可以同时建立的最大连接数。...默认值为 2。maxIdleTimeMS连接在池中可保持空闲状态的最大毫秒数,在此时间过后,连接将被删除或关闭。并非所有驱动程序都支持此选项。...minPoolSize=5&maxPoolSize=100&maxIdleTimeMS=10000&w=0连接字符串写关注说明最后发现还是对性能提升没有什么用。...mongoDB的索引详解 mongo.conf配置文件mongo.conf 文件中的多个配置选项可以影响 MongoDB 的读写性能。报错存储引擎、日志记录、缓存大小等等。

    29001

    Redis和MongoDB的区别(面试受用)

    项目中用的是MongoDB,但是为什么用其实当时选型的时候也没有太多考虑,只是认为数据量比较大,所以采用MongoDB。...最近又想起为什么用MongoDB,就查阅一下,汇总汇总: 之前也用过redis,当时是用来存储一些热数据,量也不大,但是操作很频繁。...现在项目中用的是MongoDB,目前是百万级的数据,将来会有千万级、亿级。 就Redis和MongoDB来说,大家一般称之为Redis缓存、MongoDB数据库。...这也是有道有理有根据的, Redis主要把数据存储在内存中,其“缓存”的性质远大于其“数据存储“的性质,其中数据的增删改查也只是像变量操作一样简单; MongoDB却是一个“存储数据”的系统,增删改查可以添加很多条件...id_mapper').aggregate([{$group:{ _id :"$contract_id",count:{$sum:1}}},{$match:{count:{$gt:1}}}]) 判断是否为空

    44530

    面试官:说一下Redis和MongoDB的区别?

    项目中用的是MongoDB,但是为什么用其实当时选型的时候也没有太多考虑,只是认为数据量比较大,所以采用MongoDB。...最近又想起为什么用MongoDB,就查阅一下,汇总汇总: 之前也用过redis,当时是用来存储一些热数据,量也不大,但是操作很频繁。...现在项目中用的是MongoDB,目前是百万级的数据,将来会有千万级、亿级。 就Redis和MongoDB来说,大家一般称之为Redis缓存、MongoDB数据库。...这也是有道有理有根据的, Redis主要把数据存储在内存中,其“缓存”的性质远大于其“数据存储“的性质,其中数据的增删改查也只是像变量操作一样简单; MongoDB却是一个“存储数据”的系统,增删改查可以添加很多条件...id_mapper').aggregate([{$group:{ _id :"$contract_id",count:{$sum:1}}},{$match:{count:{$gt:1}}}]) 48 49判断是否为空

    5.3K80

    MongoDB快速入门如果把mysql比作大名鼎鼎的c语言;那么mongodb就是简单友好的pythonMysql数据库有什么缺陷?关系型数据库的连接查询会影响查询效率?连接查询效率低,为

    MongoDB快速入门 如果把mysql比作大名鼎鼎的c语言;那么mongodb就是简单友好的python Mysql数据库有什么缺陷关系型数据库表结构复杂,扩展性差; 需要较高的学习成本,复杂的表结构会产生更高的维护成本...关系型数据库的"连接查询"会影响查询效率会使查询效率变低 连接查询效率低,为什么还要分表分表可以减少数据冗余 数据库可以不使用复杂的表结构么可以,但要多消耗一些存储空间,mongodb(非关系型数据库...)就为此而生 ---- 与Mysql相比,Mongodb简单极了!...mysql中"记录"的概念,mongo使用"文档"存储任意数量的"键值对"信息("记录"中的信息受表中各字段的约束,"文档"可以存放任意数量的键值对) mongo无需手动设置"主键",系统会自动为每一个...gt:18}}) 3.修改文档 格式 db.集合名.update({修改文档的条件},{$set:{需要修改的属性名:属性值}}, {multi: ture}) 示例(将age=17的文档更新为

    1.1K90

    我在做社交项目中的用过的技术栈

    二:项目中吐槽模块数据的存储使用了MongoDB,主要考虑因素是使用MongoDB(其中MongoDB点赞数+1如果用的是数据库springdata提供的mongodb(dao层继承MongoRepostory...命令来实现自增 //db.spit.update(("id":"1"),{$inc:{thumbup:Number Int(1)}}) Query query=new Query();...五:用户注册时,用lang3包生成6位验证码保存到redis并写成map已直接模式存入RabbitMQ队列中利用Aliyun短信服务发送到用户端,点击注册时比对缓存验证码和用户的验证码,如果一致则返回成功并删除缓存中该值...我第一次开发注册时候突然想起来忘了删除缓存中验证码,结果一条短信3分钟都有效,注册完了还能循环利用 哈哈哈哈哈,为什么用消息中间件做中间处理呢?...service层根据解析情况进行不同的操作,比如添加好友时候需要用户token,删除用户需要admin token 4,前后端做一些约定:比如前端请求微服务时需要添加头信息Authorization ,内容为Bearer

    38320

    常见问题:MongoDB诊断

    为什么MongoDB会记录这么多“Connection Accepted”事件日志? 如果您在MongoDB日志中看到非常大量的连接和重新连接消息,则客户端经常连接和断开与MongoDB服务器的连接。...如果这些连接不会影响性能,则可以使用运行时quiet选项或命令行选项 --quiet来禁止日志中的这些消息。 有哪些工具可用于监控MongoDB?...操作系统将使用可用的空闲内存用于文件系统缓存,以允许压缩的MongoDB数据文件保留在内存中。此外,操作系统将使用任何空闲内存来缓冲文件系统块和文件系统缓存。...操作系统将使用可用的空闲内存用于文件系统缓存,这允许压缩的MongoDB数据文件保留在内存中。此外,操作系统将使用任何空闲内存来缓冲文件系统块和文件系统缓存。...通过在分片之间迁移chunk数据块来进行负载均衡,直到每个分片具有大致相同数量的分块。 默认块大小为64M字节。

    1.1K30

    Python 全栈工程师必备面试题 300 道(2020 版)

    5.1.22 解释 MySQL 外连接、内连接与自连接的区别? 5.1.23 如何进行 SQL 优化? 5.1.24 什么是 MySQL 主从?主从同步有什么好处?...5.2.13 缓存雪崩和缓存穿透是什么?如何预防解决? 5.2.14 布隆过滤器是什么? 5.2.15 简单描述一下什么是缓存预热、缓存更新和缓存降级?...5.3.7 MongoDB 常用的管理命令有哪些? 5.3.8 MongoDB 为何使用 GridFS 来存储文件? 5.3.9 如果一个分片(Shard)停止或很慢的时候,发起一个查询会怎样?...5.3.14 必须调用 getLastError 来确保写操作生效了么? 5.3.15 MongoDB 副本集原理及同步过程? 5.3.16 MongoDB 中的分片是什么意思?...5.3.18 在 MongoDB 中什么是索引? 5.3.19 什么是聚合? 5.3.20 写一个 Python 连接操作 MongoDB 数据库实例? 6.

    2.3K41

    这次简单多了,最新版 MongoDB 安装

    首先,访问MongoDB 官方网站,下载 MongoDB 4.0.1版,网址如下:· https://www.mongodb.com/ 按红色箭头指示操作 ?...完成安装后,新建一个连接 ? ? 设置后之后,点击 connect ? 在右侧,我们可以看到数据库与数据表(这是我运行程序添加的) ? 红色箭头所指是 数据库, 红色框所指是 数据表。...MongoDB 简介: MongoDB使用C++语言编写的非关系型数据库。特点是高性能、易部署、易使用,存储数据十分方便。...MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。 ?...至于这个 MongoDB 有什么用处呢,后续根据案例情况还会有介绍的。 ---------------- End ----------------

    62230

    MongoDB之内存管理

    在MongoDB中,加载各种依赖的lib到内存、管理客户端请求、元数据管理存储等工作都需要占用内存,但其实内存使用的大部分还是在存储引擎和客户端连接请求处理方面。...一方面是存储引擎的cache,通常情况下,我们可以使用参数cacheSizeGB参数(下面会讲到)来控制内存使用率,一旦超过这个内存使用率,则MongoDB的存储引擎会淘汰掉部分内存中的数据页。...每个连接占用的内存大小约为2MB左右。 01 如何限制MongoDB对内存的使用?...在MongoDB中,如果我们不限制MongoDB的内存使用,那么MongoDB就会尽可能的占用更多的内存来提高读写性能。...02 cacheSizeGB参数配置的注意事项 几点建议: 1、不要增加WiredTiger的内部cache size超过默认值 2、WiredTiger存储引擎使用WiredTiger内部缓存和文件系统缓存

    3.3K10

    MongoDB系列之适用场景和不适用场景

    2、MongoDB局限性 不支持连接:与支持连接的理性数据库不同,MongoDB 不支持。...尽管可以通过手动编码来添加连接功能,但执行起来可能会很慢并影响性能。...数据大小有限制:MongoDB允许的文档最大值为16MB 不能无限嵌套:MongoDB的数据格式是BSON的,但是其不支持无限的嵌套,用户不能超过100级的文档嵌套 高内存:MongoDB会存储每个值对的键名...它还受到数据冗余的影响,因为它缺乏连接的功能。这会导致高内存使用率。...2)数据缓存:由于性能很高,MongoDB 也适合作为信息基础设施的缓存层。在系统重启之后,由 MongoDB 搭建的持久化缓存层可以避免下层的数据源过载。

    4.6K10

    MongoDB性能分析之WiredTiger引擎

    一、WiredTiger引擎MongoDB的WiredTiger引擎可以设置其可使用的最大内存,由cacheSizeGB参数控制,单位为G,表示WiredTiger引擎能够缓存的最大热数据量。...每一个连接数都会消耗内存使用,可通过命令行db.serverStatus().connections查看当前连接数,如果连接数较大可通过连接池的方式控制mongodb的连接数。...缓存中删除最近最少使用的页,以便为需要很快访问的其他页腾出空间。...进一步减少这个数量的唯一方法是减少WiredTiger 缓存的大小,这将产生其他瓶颈。(4)优化回收线程默认情况下,MongoDB会分配后台线程来执行回收,我们可以指定最小值和最大值。...MongoDB为每一个连接创建一个线程,线程的创建与释放也会有开销,所以尽量要适当配置连接数的启动参数maxIncomingConnectionstime                时间戳2.2 案例讲解

    7310

    MongoDB与内存

    只是虚拟内存引申出的一种技术而已:操作系统一旦物理内存不足,为了腾出内存空间存放新内容,就会把当前物理内存中的内容放到交换分区里,稍后用到的时候再取回来,需要注意的是,Swap的使用可能会带来性能问题,偶尔为之无需紧张...再说说MongoDB是如何使用内存的 目前,MongoDB使用的是内存映射存储引擎,它会把数据文件映射到内存中,如果是读操作,内存中的数据起到缓存的作用,如果是写操作,内存还可以把随机的写操作转换成顺序的写操作...MongoDB的内存使用机制让它在缓存重建方面更有优势,简而言之:如果重启进程,那么缓存依然有效,如果重启系统,那么可以通过拷贝数据文件到/dev/null的方式来重建缓存,更详细的描述请参考:Cache...有时候,MongoDB连接数过多的话,会拖累性能,可以通过serverStatus查询连接数: mongo> db.serverStatus().connections 每个连接都是一个线程,需要一个Stack...如果想验证这一点,可以在开启或关闭journal后,通过pmap命令来观察文件映射情况: shell> pmap $(pidof mongod) 到底MongoDB配备多大内存合适?

    69630

    2021春招Java后端开发面试总结【25个技术专题】超详细!

    为什么要使用 7、怎样通过 Java 程序来判断 JVM 是 32 位 还是 64位? 8、32 位 JVM 和 64 位 JVM 的最大堆内存分别是多数?...9、Redis持久化机制 10、缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题 11、热点数据和冷数据是什么 12、单线程的redis为什么这么快 13、redis的数据类型,以及每种数据类型的使用场景...十三、MongoDB面试题 1、mongodb是什么? 2、mongodb有哪些特点? 3、你说的NoSQL数据库是什么意思?NoSQL与RDBMS直接有什么区别?...5、MySQL与MongoDB之间最基本的差别是什么? 6、你怎么比较MongoDB、CouchDB及CouchBase? 7、MongoDB成为最好NoSQL数据库的原因是什么?...30、@Qualifier 注解有什么用? 31、@RequestMapping 注解有什么用? 32、spring DAO 有什么用? 33、列举 Spring DAO 抛出的异常。

    2.7K30

    Redis之NoSql入门和概述

    程序员们开始大量的使用缓存技术来缓解数据库的压力,优化数据库的结构和索引。...开始比较流行的是通过文件缓存来缓解数据库压力,但是当访问量继续增大的时候,多台web机器通过文件缓存不能共享,大量的小文件缓存也带了了比较高的IO压力。...Memcached作为一个独立的分布式的缓存服务器,为多个web服务器提供了一个共享的高性能缓存服务,在Memcached服务器上,又发展了根据hash算法来进行多台Memcached缓存服务的扩展,然后又出现了一致性...hash来解决增加或减少缓存服务器导致重新hash带来的大量缓存失效的弊端 1.1.3、Mysql主从读写分离 由于数据库的写入压力增加,Memcached只能缓解数据库的读取压力。...+集群简介 分布式系统(distributed system) ​ 由多台计算机和通信的软件组件通过计算机网络连接(本地网络或广域网)组成。

    32900

    服务性能监控都包括哪些指标?

    Change DB、Select、Insert、Update、Delete MySQL持久连接利用率 MySQL查询缓存空间使用率 MySQL查询缓存命中率 MySQL缓存查询数 MySQL索引缓存命中率...MySQL索引读取统计 MySQL连接吞吐率 MySQL连接缓存命中率 MySQL并发连接数,包括最大允许连接数、实际最大连接数、当前连接数、活跃连接数、缓存连接数 MySQL流量统计 MySQL表统计锁定...image.png MongoDB性能监控支持以下指标: MongoDB全局锁时间比例。...此指标反映MongoDB进入锁状态的时间比例。 MongoDB当前等待锁总数。是读锁数和写锁数的总和。 MongoDB当前等待读锁数。因读请求过高时触发的锁数。 MongoDB当前等待写锁数。...此指标能反映MongoDB使用内存,磁盘空间的状况。 MongoDB分页次数,此指标反映内存分页的次数,有助于对MongoDB的性能分析。

    1.9K80
    领券