三数据库速查指南:MongoDB、MySQL与Redis操作对比
数据库操作是日常开发中的高频任务,不同数据库的语法差异常导致效率低下。本文将对比MongoDB、MySQL和Redis三种主流数据库的核心操作,帮助开发者快速切换使用。
核心操作对比
连接与基础操作
| 操作 | MongoDB | MySQL | Redis |
|---|---|---|---|
| 连接命令 | mongo --host <host> --port <port> | mysql -u <user> -p <pwd> | redis-cli -h <host> -p <port> |
| 显示所有数据库 | show dbs | SHOW DATABASES; | INFO keyspace |
| 切换数据库 | use <db_name> | USE <db_name>; | 自动创建不存在的数据库 |
| 删除数据库 | db.dropDatabase() | DROP DATABASE <db_name>; | FLUSHDB |
数据结构与操作
MongoDB文档操作
MongoDB使用BSON格式存储文档,支持嵌套结构:
// 插入文档 [databases/mongodb.sh](https://link.gitcode.com/i/dd2b3e565ae06f046dce3ed28c60ed14)
db.posts.insert({
title: 'Post One',
body: 'Body of post one',
category: 'News',
tags: ['news', 'events'],
user: {
name: 'John Doe',
status: 'author'
},
date: Date()
})
// 查询带格式化输出
db.posts.find({ category: 'News' }).pretty()
MySQL关系型操作
MySQL需要先定义表结构,支持复杂的JOIN查询:
-- 创建表 [databases/mysql.sh](https://link.gitcode.com/i/17fbce221e94248d1e27ecd7233adcb2)
CREATE TABLE posts (
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(255),
body TEXT,
category VARCHAR(50)
);
-- 插入数据
INSERT INTO posts (title, body, category)
VALUES ('Post One', 'Body of post one', 'News');
Redis键值对操作
Redis支持多种数据结构,以字符串操作为例:
# 设置与获取值 [databases/redis.sh](https://link.gitcode.com/i/c0c6010629fa84161639c2f70ba1de1f)
SET user:1 "John Doe"
GET user:1
# 列表操作
LPUSH posts "Post One"
LRANGE posts 0 -1
应用场景分析
MongoDB适用场景
- 内容管理系统
- 用户数据存储
- 日志记录系统
MySQL适用场景
- 电子商务平台
- 财务系统
- 需要复杂事务的应用
Redis适用场景
- 缓存系统
- 会话存储
- 实时计数器
性能优化建议
MongoDB优化
- 创建索引:
db.posts.createIndex({ title: 1 }) - 使用投影查询只返回需要的字段
MySQL优化
- 合理设计索引
- 使用
EXPLAIN分析查询性能 - 定期执行
OPTIMIZE TABLE
Redis优化
- 设置合理的过期时间:
EXPIRE key 3600 - 使用管道(Pipeline)批量操作
总结
本文对比了三种数据库的核心操作,实际应用中需根据数据特性选择合适的数据库。完整的命令参考可查看项目中的数据库速查表文件:
掌握这些操作将显著提高跨数据库开发效率,建议收藏本文以备日常参考。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考




