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 数据非结构化、字段灵活、海量存储
相关推荐
科技小花4 小时前
数据治理平台架构演进观察:AI原生设计如何重构企业数据管理范式
数据库·重构·架构·数据治理·ai-native·ai原生
一江寒逸4 小时前
零基础从入门到精通MySQL(中篇):进阶篇——吃透多表查询、事务核心与高级特性,搞定复杂业务SQL
数据库·sql·mysql
D4c-lovetrain4 小时前
linux个人心得22 (mysql)
数据库·mysql
阿里小阿希4 小时前
CentOS7 PostgreSQL 9.2 升级到 15 完整教程
数据库·postgresql
荒川之神4 小时前
Oracle 数据仓库雪花模型设计(完整实战方案)
数据库·数据仓库·oracle
做个文艺程序员4 小时前
MySQL安全加固十大硬核操作
数据库·mysql·安全
不吃香菜学java5 小时前
Redis简单应用
数据库·spring boot·tomcat·maven
一个天蝎座 白勺 程序猿5 小时前
Apache IoTDB(15):IoTDB查询写回(INTO子句)深度解析——从语法到实战的ETL全链路指南
数据库·apache·etl·iotdb
不知名的老吴5 小时前
Redis的延迟瓶颈:TCP栈开销无法避免
数据库·redis·缓存
YOU OU5 小时前
三大范式和E-R图
数据库