1. 简介
MySQL、MongoDB、Redis 是后端开发最常用的三类数据库。
- MySQL:关系型数据库,适合结构化数据、事务强一致场景。
- MongoDB:文档型数据库,适合灵活结构、海量读写场景。
- Redis:内存键值数据库,适合缓存、队列、实时统计等高性能场景。
2. MySQL 入门
2.1 核心概念
MySQL 以「表」存储数据,表由行和列组成,通过 SQL 操作。核心特性:事务(ACID)、外键、强约束。
2.2 连接与数据库管理
下载并安装 MySQL 后,打开命令行工具,使用以下命令连接本地 MySQL 服务:
# 连接本地 MySQL 服务,-u 指定用户名,-p 提示输入密码 mysql -u root -p参数说明:
- -u:指定登录用户名,root 是默认超级管理员账号。
- -p:提示输入密码,回车后输入安装时设置的 root 密码即可进入 MySQL 交互终端。
- -h:指定主机地址,默认 localhost,连接远程数据库时使用,例如
-h 192.168.1.100。 - -P:指定端口号,默认 3306,例如
-P 3307。
进入 MySQL 后,先查看已有数据库,再创建并进入自己的数据库:
-- 查看所有数据库 show databases; -- 创建数据库,指定 utf8mb4 字符集避免中文乱码 create database mydb default character set utf8mb4; -- 切换到指定数据库 use mydb;参数说明:
- show databases:列出当前 MySQL 实例中的所有数据库。
- create database:创建新数据库,
default character set utf8mb4指定字符集,避免中文乱码。 - use:切换到指定数据库,后续建表、增删改查都在该库中进行。
2.3 常用操作
建表、增删改查是最常用操作,示例:
-- 创建用户表,id 自增主键,name 非空 create table user ( id int primary key auto_increment, name varchar(50) not null, age int ); -- 插入一条用户记录 insert into user (name, age) values ('张三', 25); -- 查询年龄大于 20 的用户 select * from user where age > 20; -- 更新张三的年龄为 26 update user set age = 26 where name = '张三'; -- 删除 id 为 1 的用户 delete from user where id = 1;2.4 常用优先
- 索引:加速查询,常用主键索引和普通索引。
- 事务:保证数据一致性,使用 begin / commit / rollback。
- 连接查询:join 关联多表数据。
3. MongoDB 入门
3.1 核心概念
MongoDB 以「文档」存储数据,文档是 JSON 风格对象,集合类似表。特点:无固定结构、水平扩展容易。
3.2 连接与数据库管理
MongoDB 安装后,默认监听 27017 端口。使用 mongosh 命令连接本地 MongoDB 服务:
# 连接本地 MongoDB 服务,默认连接 test 数据库 mongosh # 或者 mongodb://localhost:27017/参数说明:
- mongosh:MongoDB 官方交互式 Shell,连接本地默认实例。
- --host:指定主机地址,默认 localhost,连接远程时使用,例如
--host 192.168.1.100。 - --port:指定端口号,默认 27017,例如
--port 27018。MongoDB 无需显式创建数据库,使用 use 命令切换或创建数据库,插入数据后数据库才会真正落盘:
// 切换到(不存在则创建)mydb 数据库 use mydb // 查看当前数据库 db // 查看所有数据库 show dbs参数说明:
- use:切换数据库,若不存在则创建,但需插入数据后才会在 show dbs 中显示。
- db:显示当前所在的数据库名称。
- show dbs:列出所有已有数据的数据库。
3.3 常用操作
// 插入一条用户文档 db.user.insertOne({ name: "李四", age: 30 }); // 查询年龄大于 20 的用户 db.user.find({ age: { $gt: 20 } }); // 更新李四的年龄为 31 db.user.updateOne({ name: "李四" }, { $set: { age: 31 } }); // 删除名为李四的用户 db.user.deleteOne({ name: "李四" });3.4 常用优先
- 索引:同样支持索引,提升查询性能。
- 聚合管道:用于统计、分组等复杂操作。
- 副本集:保证高可用和数据冗余。
4. Redis 入门
4.1 核心概念
Redis 是内存数据库,数据以键值对存储,读写极快。支持字符串、哈希、列表、集合、有序集合等数据类型。
4.2 连接与数据库管理
Redis 安装后,默认监听 6379 端口。使用 redis-cli 命令连接本地 Redis 服务:
# 连接本地 Redis 服务,默认连接 0 号数据库 redis-cli # 指定主机和端口连接远程 Redis redis-cli -h 192.168.1.100 -p 6379 # 设置过 用户名密码用这种 redis-cli -h 127.0.0.1 -p 6379 --user <你的用户名> --askpass参数说明:
- redis-cli:Redis 官方命令行客户端,连接本地默认实例。
- -h:指定主机地址,默认 localhost,连接远程 Redis 时使用。
- -p:指定端口号,默认 6379,例如
-p 6380。
Redis 默认提供 16 个逻辑数据库(编号 0-15),无需显式创建,使用 select 命令切换:
# 切换到 1 号数据库 select 1 # 查看当前数据库的键数量 dbsize # 清空当前数据库 flushdb参数说明:
- select:切换逻辑数据库,Redis 默认有 16 个(0-15),无需创建即可使用。
- dbsize:查看当前数据库中的键数量。
- flushdb:清空当前数据库中的所有键。
4.3 常用操作
# 字符串:设置和获取键 name 的值 set name "王五" get name # 哈希:设置和获取 user:1 的字段 hset user:1 name "王五" age 28 hget user:1 name # 列表:左侧入队、右侧出队 lpush queue "task1" rpop queue # 过期:设置 name 键 60 秒后过期 expire name 604.4 常用优先
- 缓存:减轻数据库压力,提升响应速度。
- 分布式锁:使用 SETNX 实现互斥控制。
- 发布订阅:实现消息通知机制。
5. 三者对比与选型
| 维度 | MySQL | MongoDB | Redis |
|---|---|---|---|
| 数据模型 | 关系表 | 文档 | 键值 |
| 存储介质 | 磁盘 | 磁盘 | 内存 |
| 事务支持 | 强(ACID) | 支持(多文档) | 支持(Lua 脚本) |
| 典型场景 | 订单、账户 | 日志、内容管理 | 缓存、队列、计数 |
选型建议:数据强一致选 MySQL;结构灵活、海量数据选 MongoDB;追求极致性能选 Redis。实际项目中三者常组合使用。
6. 总结
本文介绍了 MySQL、MongoDB、Redis 的核心概念、常用操作和选型思路。建议按「先掌握常用命令,再深入原理」的路径逐步学习,并在实际项目中动手实践。