MySQL vs Redis vs MongoDB:三大数据库

工具 正确拼写 类型 核心定位
MySQL MySQL 关系型数据库(RDBMS) 结构化数据存储、事务性业务
Redis Redis 内存键值数据库 高性能缓存、临时数据、实时计算
MongoDB MongoDB 文档型 NoSQL 数据库 非结构化 / 半结构化数据、灵活扩展

二、核心特性对比

特性 MySQL Redis MongoDB
存储介质 磁盘(支持内存引擎) 内存(可选持久化到磁盘) 磁盘(支持内存映射)
数据模型 二维表(行 + 列)、强 Schema 键值对(支持字符串 / 哈希 / 列表等) BSON 文档(类 JSON、弱 Schema)
事务支持 ACID 完整支持(InnoDB 引擎) 单命令原子性、部分多命令事务 单文档原子性、多文档事务(4.0+)
查询能力 强大的 SQL、联表、聚合、索引 简单键查询、有限聚合 类 SQL 查询、聚合管道、地理索引
性能 磁盘 IO 为主,中高吞吐 内存操作,超高 QPS(百万级) 文档存储,高吞吐、低延迟
扩展性 主从 / 分库分表(垂直 / 水平) 主从 / 集群(分片) 分片集群、副本集(自动故障转移)

三、适用场景(核心区别)

1. MySQL:适合「结构化、事务性」业务
  • 核心场景 :

    • 电商订单、用户账户、支付系统(需要 ACID 保证);
    • 财务数据、物流信息(强一致性要求);
    • 报表统计、复杂联表查询(SQL 优势)。
  • 典型用法 :

    sql

    复制代码
    -- 创建用户表(结构化、强Schema)
    CREATE TABLE users (
      id INT PRIMARY KEY AUTO_INCREMENT,
      username VARCHAR(50) UNIQUE NOT NULL,
      password VARCHAR(100) NOT NULL,
      create_time DATETIME DEFAULT CURRENT_TIMESTAMP
    );
    -- 事务操作(保证原子性)
    BEGIN;
    UPDATE account SET balance = balance - 100 WHERE id = 1;
    UPDATE account SET balance = balance + 100 WHERE id = 2;
    COMMIT;
2. Redis:适合「高性能、临时 / 实时」场景
  • 核心场景 :

    • 缓存(减轻 MySQL 压力,如商品详情、用户信息);
    • 分布式锁(秒杀、库存扣减);
    • 计数器(点赞数、访问量)、限流器;
    • 消息队列(List 结构)、会话存储(Session)。
  • 典型用法 :

    redis

    复制代码
    -- 设置缓存(过期时间1小时)
    SET user:1001 '{"id":1001,"name":"张三"}' EX 3600;
    -- 计数器自增
    INCR article:2001:like_count;
    -- 分布式锁(NX=不存在才设置,PX=毫秒过期)
    SET lock:order:5001 1 NX PX 30000;
3. MongoDB:适合「非结构化、灵活扩展」场景
  • 核心场景 :

    • 内容管理(文章、评论、朋友圈,字段不固定);
    • 日志存储、物联网数据(海量、结构多变);
    • 移动端数据(字段可动态扩展,无需改表)。
  • 典型用法 :

    javascript

    运行

    复制代码
    // 插入文档(无需提前建表,字段灵活)
    db.articles.insertOne({
      title: "Redis实战",
      content: "缓存设计",
      tags: ["Redis", "缓存"],
      create_time: new Date(),
      author: {name: "张三", age: 30} // 嵌套文档
    });
    // 查询(类SQL,灵活)
    db.articles.find({tags: "Redis"}, {title: 1});

四、三者协同使用的典型架构

plaintext

复制代码
用户请求 → 先查Redis缓存 → 缓存命中 → 直接返回
                ↓ 缓存未命中
           查MySQL/MongoDB → 返回数据 → 同步更新Redis缓存

示例场景:

  • 电商商品详情:Redis 缓存商品基本信息(高访问量),MySQL 存储商品完整结构化数据(库存、价格、规格),MongoDB 存储商品评价(非结构化、字段多变)。
  • 秒杀系统:Redis 做库存计数器 + 分布式锁(高性能),MySQL 做最终订单落库(事务保证)。

五、选型总结

选谁? 核心判断依据
MySQL 数据结构化、需要事务、复杂查询
Redis 追求极致性能、临时数据、缓存 / 锁
MongoDB 数据非结构化、字段灵活、海量存储
相关推荐
仍然.6 小时前
Redis---缓存
数据库·redis·缓存
Aloudata7 小时前
LookML 语义模型 vs 企业级独立语义层:BI 建模语言能否承担企业语义底座?
数据库·人工智能·数据分析·数据资产·dataagent
细嗅蔷薇@7 小时前
排序和分⻚(order by 、limit)
数据库·oracle
wdfk_prog7 小时前
LWIP教程 09:从 `tcp_slowtmr()` 到 Fast Retransmit——TCP 超时重传与重复 ACK
服务器·网络·数据库·网络协议·tcp/ip
逸模7 小时前
BIM在连锁餐饮装修中的应用:不只是画三维图
大数据·数据库·人工智能·物联网·建模
梦想平凡7 小时前
棋牌游戏技术实战(五):从对局事件重新执行规则,核对棋盘和最终状态
数据库·游戏·oracle
白露与泡影7 小时前
Oracle AI Database 26ai RAC 部署步骤、关键命令与一键脚本
数据库·人工智能·oracle
天天喝旺仔8 小时前
MySQL 索引原理与慢查询优化实战:从 B+ 树到执行计划调优
数据库·sql·mysql·性能优化
专业程序开发源8 小时前
flask家电故障预测系统92491-计算机课程设计/毕业设计
vscode·python·sql·算法·flask·课程设计
liulilittle8 小时前
Linux 下 select 测试函数
linux·服务器·网络·数据库·c++·select·c