V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐工具
RoboMongo
推荐书目
50 Tips and Tricks for MongoDB Developers
Related Blogs
Snail in a Turtleneck
51300520
V2EX  ›  MongoDB

mongodb 和 redis 的疑惑,我感觉 mongodb 岂不是可以代替 redis 了?

  •  4
     
  •   51300520 · 2018-12-18 04:21:27 +08:00 · 12441 次点击
    这是一个创建于 2166 天前的主题,其中的信息可能已经有所发展或是发生改变。

    mongodb 早就是优先把数据放入内存,内存装不下了才存磁盘做冷热数据处理。那我是不是可以把 mongodb 看做一个比 redis 更智能的内存数据库?它还知道内存不够了自己做冷热数据分开存储处理。

    有文章说到 mongodb 数据量大了超过内存的时候要从磁盘读,速度慢。可是数据量大了超过内存这个情况 redis 更没法用了啊,要保证数据完全在内存中那就只能做群集分担,要么就是 redis 根据设定规则淘汰一些键。而 mongodb 也可以方便的做群集。

    进一步我产生了 mongodb 是不是可以代替 redis 的想法?用 mongodb 我可以不那么担心内存,就算数据量超过内存大小了他至少会自动处理,虽然性能变差了至少还能用,给我优化系统留一个缓冲时间。而用 redis 我要时时刻刻担心并监控内存使用情况,生怕一不留神内存爆了。

    我没怎么用过 mongodb,想了解一下去网上找的文档阅读,以上是我阅读后的思考结果。有熟悉这 2 种数据的朋友帮忙解答一下疑惑吗?

    28 条回复    2018-12-19 12:08:46 +08:00
    arYUWang
        1
    arYUWang  
       2018-12-18 04:31:56 +08:00
    我也很感兴趣,想看看有没有人回复这个贴。是不是可以在这里留个言就好?还是说出了水一发还有别的办法可以收到评论的通知?
    binux
        2
    binux  
       2018-12-18 04:37:23 +08:00 via Android   ❤️ 1
    Google mongodb redis benchmark
    wspsxing
        3
    wspsxing  
       2018-12-18 04:50:44 +08:00 via Android
    性能差距,也许你需要 360 的 pika
    yuikns
        4
    yuikns  
       2018-12-18 05:40:14 +08:00
    mongo 和 redis 的单次查询时间相差至少一个数量级....
    yuikns
        5
    yuikns  
       2018-12-18 05:42:01 +08:00
    要是想要一个大容量用硬盘的 redis,那么 ssdb 了解一下。
    stabc
        6
    stabc  
       2018-12-18 06:19:45 +08:00   ❤️ 2
    主要还是性能差距导致用途不同吧。mongodb 更偏向保存数据,而 redis 更偏向保持状态。比如 facebook 用 redis 来记录用户是否已经读了某个帖子以及停留状况,当用户下拉页面时就把访问情况记录到 redis 里。
    fundebug
        7
    fundebug  
       2018-12-18 08:46:43 +08:00
    查询 mongodb 肯定比查询 redis 慢,那么缓存还得用 redis。另外 mongodb 非常消耗内存,用它当缓存用不划算。
    myhot21
        8
    myhot21  
       2018-12-18 08:58:20 +08:00 via Android
    你这是只考虑业务实现了,可以自己测试下,性能差别很大的。如果只考虑业务,mysql 也是同样能代替 redis。
    leriou
        9
    leriou  
       2018-12-18 09:07:53 +08:00
    从功能上说是可以的, 不过场景不同, 只是某些地方有重合, Redis 性能更强, 耦合更低, 对数据针对性更强
    lideshun123
        10
    lideshun123  
       2018-12-18 09:20:10 +08:00
    芒果对标的应该是 mysql 和 redis 做对比应用场景不同,
    zhangweifang
        11
    zhangweifang  
       2018-12-18 09:20:21 +08:00
    类比下 CPU 内的缓存和内存的差别即可,Redis 和 MongoDB 的目的还是差别挺大的。
    aaa5838769
        12
    aaa5838769  
       2018-12-18 09:20:58 +08:00
    个人感觉 mongodb 更适合保存冷数据,redis 适合保存热数据。
    eliteYang
        13
    eliteYang  
       2018-12-18 09:40:44 +08:00
    pika 了解一些,基于 rocksdb 实现的兼容 redis 协议的大容量 nosql,目前我们项目用在生产环境中
    xiaomimei
        14
    xiaomimei  
       2018-12-18 09:45:16 +08:00 via Android
    插眼
    hotea
        15
    hotea  
       2018-12-18 09:48:02 +08:00
    战略性 mark
    xiaogui
        16
    xiaogui  
       2018-12-18 09:59:52 +08:00
    mongodb -> 数据库
    redis -> 缓存
    whitesnoopy
        17
    whitesnoopy  
       2018-12-18 10:11:20 +08:00
    redis 适合 TPS 比较高的场景(例如点赞功能),mongodb 适合海量数据场景(例如评论功能)
    BOYPT
        18
    BOYPT  
       2018-12-18 10:13:57 +08:00
    在需求没达到一定量级时候,很多东西可以相互替换。
    ilaipi
        19
    ilaipi  
       2018-12-18 10:15:35 +08:00 via iPhone
    我们公司目前的主力数据库就是 mongodb ……
    sunnyadamm
        20
    sunnyadamm  
       2018-12-18 10:20:58 +08:00
    一个是数据存储,一个是数据状态存储,两个库性能上差距也是很大的,各有优点,要参考实际情况选择使用
    NoBugDie
        21
    NoBugDie  
       2018-12-18 10:32:21 +08:00 via Android
    mark 一下
    Light3
        22
    Light3  
       2018-12-18 10:34:03 +08:00
    缓存 和数据库 都分不清吗..
    fcten
        23
    fcten  
       2018-12-18 11:15:32 +08:00
    对于楼主来说,可能是的。因为个人项目 /中小型项目往往没有足够的收益,节省的人力成本是最主要的。

    对于成熟的工程来说,不是。因为 redis 带来的性能提升所节省的成本要远远多于多付出的那点人力成本。更何况成熟的项目不能容忍性能波动,不可能出现内存不够硬盘来凑的情况。

    如果微信动不动一条消息延迟一个小时才能收到,谁还会用它?
    nekoyaki
        24
    nekoyaki  
       2018-12-18 11:23:02 +08:00
    类似 ATP 和葡萄糖的关系吧,redis 用全内存设计,牺牲内存为代价换来了巨大的速度提升。
    实际更多的情况这些东西是互补的而不是互斥的。
    另外 redis 也不一定都是用来做“缓存”,很多用法里,redis 是拿来存储真正的业务数据,需要持久化的。适用场景就是比如列表啊,关系关联啊,键值映射之类的,体积小,但是需要快速查询的那种。
    xkeyideal
        25
    xkeyideal  
       2018-12-18 11:28:37 +08:00   ❤️ 1
    特快列车与高铁的区别
    Tyrone
        26
    Tyrone  
       2018-12-18 11:29:46 +08:00
    mark
    Mexion
        27
    Mexion  
       2018-12-18 11:40:33 +08:00
    先马
    jifengg
        28
    jifengg  
       2018-12-19 12:08:46 +08:00
    我们有些项目里,这俩都用了,redis 用做缓存,mongodb 做持久化。分工明确。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   988 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 19:54 · PVG 03:54 · LAX 11:54 · JFK 14:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.