MySQL 与 Redis 基础入门:从安装到核心操作

发布于:2025-07-27 ⋅ 阅读:(12) ⋅ 点赞:(0)

MySQL 与 Redis 基础入门:从安装到核心操作

对于刚接触数据库的开发者来说,MySQL 和 Redis 是两个绕不开的重要工具。MySQL 作为关系型数据库的代表,适合存储结构化数据;Redis 作为高性能键值数据库,在缓存和实时场景中表现出色。本文将从基础入手,带你快速掌握这两个数据库的核心操作。

一、MySQL 基础

1. 安装与连接

安装

  • 官网下载对应系统的安装包(MySQL 官网
  • 安装过程中设置 root 密码(记住这个密码,后续连接需要)
  • 验证安装:命令行输入mysql --version,显示版本信息则安装成功

连接数据库

# 命令行连接
mysql -u root -p
# 输入设置的密码后进入MySQL交互界面

2. 核心概念与 SQL 语句

MySQL 的核心是数据库(Database) 和表(Table),表由行(Row) 和列(Column) 组成,类似 Excel 的工作簿和工作表。

基础 SQL 操作
-- 1. 创建数据库
CREATE DATABASE IF NOT EXISTS mydb CHARACTER SET utf8mb4;

-- 2. 使用数据库
USE mydb;

-- 3. 创建表(用户表示例)
CREATE TABLE IF NOT EXISTS users (
  id INT PRIMARY KEY AUTO_INCREMENT,  -- 自增主键
  name VARCHAR(50) NOT NULL,          -- 姓名(非空)
  age INT,                            -- 年龄
  email VARCHAR(100) UNIQUE,          -- 邮箱(唯一)
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP  -- 创建时间
);

-- 4. 插入数据
INSERT INTO users (name, age, email) 
VALUES 
('张三', 20, 'zhangsan@test.com'),
('李四', 25, 'lisi@test.com');

-- 5. 查询数据
SELECT * FROM users;  -- 查询所有用户
SELECT name, age FROM users WHERE age > 20;  -- 条件查询

-- 6. 更新数据
UPDATE users SET age = 21 WHERE name = '张三';

-- 7. 删除数据
DELETE FROM users WHERE id = 2;

3. Python 操作 MySQL

需要先安装驱动:pip install mysql-connector-python

​import mysql.connector

# 连接数据库
db = mysql.connector.connect(
  host="localhost",
  user="root",
  password="你的密码",
  database="mydb"
)

# 创建游标(用于执行SQL)
cursor = db.cursor()

# 执行查询
cursor.execute("SELECT * FROM users")
# 获取结果
results = cursor.fetchall()  # 获取所有行
for row in results:
  print(row)  # 输出格式:(id, name, age, email, created_at)

# 插入数据
sql = "INSERT INTO users (name, age, email) VALUES (%s, %s, %s)"
val = ("王五", 30, "wangwu@test.com")
cursor.execute(sql, val)
db.commit()  # 提交事务
print(f"插入了{cursor.rowcount}条数据,ID为{cursor.lastrowid}")

# 关闭连接
cursor.close()
db.close()

二、Redis 基础

1. 安装与连接

安装

  • 官网下载安装包(Redis 官网
  • Windows 用户可使用Redis Desktop Manager或 WSL
  • 启动 Redis 服务:命令行输入redis-server
  • 验证安装:新窗口输入redis-cli ping,返回PONG则成功

连接数据库

# 命令行连接
redis-cli
# 默认连接本地6379端口,如需远程连接:
redis-cli -h 服务器IP -p 端口号 -a 密码

2. 核心数据结构与命令

Redis 的核心是键值对(Key-Value),支持多种数据结构,最常用的有:

字符串(String)

最基础的键值对,适合存储简单值:

# 设置键值
set username "zhangsan"
# 设置带过期时间的键(300秒后过期)
setex verify_code 300 "123456"
# 获取值
get username
# 删除键
del verify_code
# 查看键是否存在
exists username
哈希(Hash)

适合存储对象(如用户信息),键值对中的键值对:

# 设置哈希字段
hset user:1001 name "张三" age 25 email "zhangsan@test.com"
# 获取所有字段
hgetall user:1001
# 获取单个字段
hget user:1001 age
# 删除字段
hdel user:1001 email
列表(List)

有序可重复的集合,适合存储序列数据:

# 左侧添加元素
lpush fruits "apple"
lpush fruits "banana"
# 右侧添加元素
rpush fruits "orange"
# 获取范围内元素(0到-1表示所有)
lrange fruits 0 -1
# 弹出左侧第一个元素
lpop fruits
集合(Set)与有序集合(Sorted Set)
  • 集合:无序不重复,适合去重
  • 有序集合:带分数的集合,适合排行榜
# 集合操作
sadd tags "python" "mysql" "redis"
smembers tags  # 查看所有元素
sismember tags "java"  # 判断元素是否存在

# 有序集合操作(分数用于排序)
zadd rank 80 "张三" 90 "李四" 70 "王五"
zrevrange rank 0 2 withscores  # 降序取前3名(带分数)

3. Python 操作 Redis

需要先安装客户端:pip install redis

​import redis

# 连接Redis
r = redis.Redis(
  host="localhost",
  port=6379,
  db=0,  # 数据库编号(0-15)
  decode_responses=True  # 自动转换字节为字符串
)

# 字符串操作
r.set("site", "https://example.com")
print(r.get("site"))  # 输出:https://example.com

# 哈希操作
r.hset("user:1002", mapping={
  "name": "李四",
  "age": 30
})
print(r.hgetall("user:1002"))  # 输出:{'name': '李四', 'age': '30'}

# 列表操作
r.lpush("languages", "python", "java")
r.rpush("languages", "c++")
print(r.lrange("languages", 0, -1))  # 输出:['java', 'python', 'c++']

三、两者核心差异对比

特性 MySQL Redis
数据存储 磁盘(持久化) 内存(可选持久化)
数据模型 表结构(行列) 键值对(多数据结构)
查询方式 SQL 语句 自定义命令
优势场景 复杂查询、事务、关系数据 缓存、实时统计、临时数据
读写速度 较慢(磁盘 IO) 极快(内存操作)
数据安全 强(事务、日志) 可配置(默认内存存储)

四、入门实践:用户登录案例

结合 MySQL 和 Redis 实现一个简单的用户登录功能:

​# 1. 先检查Redis中是否有登录状态(缓存)
def check_login(user_id):
    # 尝试从Redis获取登录状态
    login_status = r.get(f"login:status:{user_id}")
    if login_status:
        return True, "已登录(来自缓存)"
    
    # 缓存未命中,查询MySQL
    db = mysql.connector.connect(
        host="localhost",
        user="root",
        password="你的密码",
        database="mydb"
    )
    cursor = db.cursor()
    cursor.execute("SELECT id FROM users WHERE id = %s", (user_id,))
    user = cursor.fetchone()
    db.close()
    
    if user:
        # 登录状态存入Redis(2小时过期)
        r.setex(f"login:status:{user_id}", 7200, "1")
        return True, "已登录(来自数据库)"
    else:
        return False, "用户不存在"

# 测试
print(check_login(1001))  # 第一次查询数据库
print(check_login(1001))  # 第二次查询缓存

五、入门总结

  • MySQL:先掌握CREATE/SELECT/INSERT/UPDATE/DELETE这 5 类基础 SQL,理解表结构设计,再逐步学习索引和事务。
  • Redis:重点掌握字符串、哈希、列表这三种常用数据结构,记住set/get/hset/hgetall/lpush/lrange这些核心命令。

作为入门,先学会用 Python 连接并执行基础操作,再根据实际需求深入学习高级特性。这两个数据库是后端开发的基础,熟练掌握后能应对大部分开发场景。


网站公告

今日签到

点亮在社区的每一天
去签到