Skip to content

键值型数据库 Redis

Redis 是一种速度非常快的数据库。

它最常见的角色,不是完全替代 MySQL,而是补充 MySQL,解决高频读写、缓存、状态保存这类问题。

本节目标

  • 理解 Redis 是什么
  • 理解 Redis 为什么快
  • 理解 Redis 的常见数据类型
  • 学会最基础的 Redis 命令
  • 理解 Redis 在项目中的典型应用场景

Redis 最适合做什么

你可以先记住这些关键词:

  • 缓存
  • 登录状态
  • 计数
  • 排行榜
  • 队列
  • 高频读取

这些都属于 Redis 很擅长的场景。

Redis 为什么快

最核心的原因之一是:

  • 它主要把数据放在内存里

内存读写速度比磁盘快很多,所以 Redis 非常适合“快进快出”的数据场景。

这也决定了它和 MySQL 的定位不一样。

Redis 的基本思维

MySQL 更像:

  • 用表、行、列去管理结构化数据

Redis 更像:

  • 用键和值去存数据

例如:

bash
SET name python
GET name

这里:

  • name 是键
  • python 是值

最基础的命令

设置值

bash
SET name python

取值

bash
GET name

如果执行:

bash
SET name python
GET name

输出示例:

text
"python"

删除

bash
DEL name

常见数据类型

1. String

最简单、最常见的数据类型。

bash
SET site PythonSpace
GET site

适合:

  • 用户名
  • 验证码
  • 配置信息
  • 缓存结果

2. List

适合存有顺序的一组数据。

bash
LPUSH tasks task1
LPUSH tasks task2
LRANGE tasks 0 -1

输出可能是:

text
1) "task2"
2) "task1"

适合:

  • 任务队列
  • 消息列表

3. Hash

适合存“对象风格”的数据。

bash
HSET user:1 name 小明 age 18 city 北京
HGETALL user:1

你可以把它理解成:

  • 一个用户对象

4. Set

集合会自动去重。

bash
SADD tags python linux python
SMEMBERS tags

输出结果里不会出现重复的 python

适合:

  • 去重记录
  • 标签集合

5. Sorted Set

适合带分数排序的数据。

常见场景:

  • 排行榜
  • 热度榜
  • 积分榜

过期时间

Redis 很适合存短时间有效的数据,例如验证码。

bash
SET code 123456
EXPIRE code 60

表示:

  • 60 秒后自动过期

你也可能看到一步写法:

bash
SETEX code 60 123456

这在验证码和临时状态里非常常见。

Redis 和 MySQL 的区别

你可以先用最朴素的方式理解:

MySQL

更适合:

  • 长期保存
  • 结构稳定
  • 关系明确

Redis

更适合:

  • 高频读写
  • 临时状态
  • 缓存
  • 队列

所以 Redis 不是“谁都能替代谁”,而是它们在项目中的职责不同。

Redis 在项目中的典型应用

1. 缓存

先查 Redis,没有再查数据库。

这能减少数据库压力。

2. 登录状态和会话信息

某些系统会把用户临时状态放到 Redis。

3. 计数

例如:

  • 阅读量
  • 点赞数
  • 访问次数

4. 排行榜

有序集合非常适合这种场景。

5. 任务队列和去重

这在爬虫和异步任务里很常见。

一个完整小练习流程

你可以自己练一遍:

  1. SET name python
  2. GET name
  3. HSET user:1 name 小明 age 18
  4. HGETALL user:1
  5. LPUSH tasks task1
  6. LRANGE tasks 0 -1
  7. SADD tags python linux python
  8. SMEMBERS tags

只要这几步做顺了,Redis 的基本手感就有了。

常见错误

1. 只记命令,不理解场景

Redis 真正难的不是命令,而是判断:

  • 什么数据适合放 Redis

2. 把 Redis 当成完全替代 MySQL 的数据库

它们定位不同。

3. 忘记 Redis 很适合“临时数据”

尤其是带过期时间的数据。

练习题

练习 1

SETGET 保存并读取一个键值。

练习 2

Hash 保存一个用户对象。

练习 3

List 做一个最简单的任务列表。

练习 4

Set 体验去重效果。

练习 5

自己总结:

  • Redis 为什么快
  • Redis 最适合解决哪些问题

本节小结

Redis 最重要的,不是你会背多少命令,而是你知道它在项目里为什么存在。

你这一节最重要的收获应该是:

  • 理解 Redis 是键值型数据库
  • 理解它为什么快
  • 会用几种常见数据类型
  • 知道缓存、状态、计数、队列这些典型场景

只要这些基础打牢,后面你再用 Python 操作 Redis 或在爬虫中使用 Redis 时,就不会只是机械调用命令。

Built with VitePress.