文章目录
- [一、Redis 是什么?一句话先听懂](#一、Redis 是什么?一句话先听懂)
-
- [和 MySQL 的直观对比](#和 MySQL 的直观对比)
- [二、Redis 的核心结构:客户端 / 服务端(非常重要)](#二、Redis 的核心结构:客户端 / 服务端(非常重要))
-
- [1️⃣ Redis 服务端(Server)是干嘛的?](#1️⃣ Redis 服务端(Server)是干嘛的?)
- [2️⃣ Redis 客户端(Client)是干嘛的?](#2️⃣ Redis 客户端(Client)是干嘛的?)
- [3️⃣ 一句话记忆法(很重要)](#3️⃣ 一句话记忆法(很重要))
- [三、Redis 在服务器上是怎么跑起来的?](#三、Redis 在服务器上是怎么跑起来的?)
-
- [Redis 的最基本运行形态](#Redis 的最基本运行形态)
- [启动 Redis 服务端(Linux)](#启动 Redis 服务端(Linux))
-
- [方式 1:系统服务(最常见)](#方式 1:系统服务(最常见))
- 查看是否启动成功
- [四、Redis 客户端怎么用?(你一定会用)](#四、Redis 客户端怎么用?(你一定会用))
- [五、Redis 在真实项目里怎么用?(重点)](#五、Redis 在真实项目里怎么用?(重点))
- [六、Redis 常用数据类型(不多,但很强)](#六、Redis 常用数据类型(不多,但很强))
-
- [Hash 示例(像对象)](#Hash 示例(像对象))
- [七、Redis 数据会不会丢?(新手最关心)](#七、Redis 数据会不会丢?(新手最关心))
-
- [Redis 默认在内存,但:](#Redis 默认在内存,但:)
- [八、Redis 和 Docker / 本地的关系(你刚好问过)](#八、Redis 和 Docker / 本地的关系(你刚好问过))
- [九、你现在"最少要记住的 10 件事"](#九、你现在“最少要记住的 10 件事”)
- 十、一句话终极总结
一、Redis 是什么?一句话先听懂
Redis 是一个"速度非常快的内存数据库"
再翻译成人话一点:
-
它把数据放在内存里
-
读写速度非常快
-
常用来做:
- 缓存
- 登录状态
- 验证码
- 分布式锁
- 消息队列(轻量)
和 MySQL 的直观对比
| 对比项 | MySQL | Redis |
|---|---|---|
| 数据存储 | 磁盘 | 内存(可落盘) |
| 速度 | 毫秒级 | 微秒级 |
| 适合存 | 重要业务数据 | 临时 / 高频数据 |
| 是否替代 MySQL | ❌ | ❌(是互补) |
👉 Redis 不是用来替代 MySQL 的,而是"帮 MySQL 扛压力的"
二、Redis 的核心结构:客户端 / 服务端(非常重要)
Redis 和 MySQL 一样,是典型的客户端 / 服务端架构。
1️⃣ Redis 服务端(Server)是干嘛的?
👉 真正存数据、干活的那个
-
进程名:
redis-server -
做的事情:
- 在内存里存数据
- 监听端口(默认 6379)
- 等客户端来连接
- 处理命令
📌 没有 Redis 服务端 = 没有 Redis
2️⃣ Redis 客户端(Client)是干嘛的?
👉 用来"连 Redis、发命令"的工具
常见客户端:
redis-cli(命令行,最常用)- Java / Python / Go 程序里的 Redis 客户端
- GUI 工具(RedisInsight 等)
📌 客户端本身不存数据
3️⃣ 一句话记忆法(很重要)
Redis-server 是"仓库"
Redis-client 是"取货的人"
三、Redis 在服务器上是怎么跑起来的?
Redis 的最基本运行形态
text
你的程序 / redis-cli
↓
TCP 6379
↓
redis-server
↓
内存
启动 Redis 服务端(Linux)
方式 1:系统服务(最常见)
bash
systemctl start redis
或:
bash
systemctl start redis-server
查看是否启动成功
bash
ps -ef | grep redis
ss -lntp | grep 6379
四、Redis 客户端怎么用?(你一定会用)
1️⃣ 最基础:redis-cli
连接 Redis
bash
redis-cli
看到:
text
127.0.0.1:6379>
说明:
- 客户端连上了服务端
- Redis 可以正常使用
测试 Redis 是否正常
bash
ping
返回:
text
PONG
👉 这是 Redis 世界里的"hello world"
2️⃣ Redis 最基础的"存 / 取"
存一个值
bash
set name zhangsan
取出来
bash
get name
输出:
text
"zhangsan"
删除
bash
del name
3️⃣ 设置"带过期时间的数据"(Redis 最常用)
bash
set code 123456 ex 60
意思是:
- 存验证码
123456 - 60 秒后自动消失
查看剩余时间:
bash
ttl code
五、Redis 在真实项目里怎么用?(重点)
下面是 99% 项目都会用到的场景。
场景 1:缓存(最常见)
问题
- 每次请求都查 MySQL
- 数据库压力大、慢
Redis 方案
text
用户请求
↓
先查 Redis
↓
有数据 → 直接返回
↓
没数据 → 查 MySQL → 写入 Redis
示例(逻辑)
bash
# 第一次
get user:1 # 没有
# 查数据库
set user:1 "{id:1,name:张三}" ex 300
场景 2:登录状态 / token
bash
set login:user:1001 token_xxx ex 3600
- 登录成功 → 写 Redis
- 请求来了 → 查 Redis
- 过期 → 自动下线
场景 3:验证码
bash
set sms:13800000000 9527 ex 60
场景 4:分布式锁(了解即可)
bash
set lock:order:123 yes nx ex 10
六、Redis 常用数据类型(不多,但很强)
你现在只需要知道这几个:
| 类型 | 说明 | 示例 |
|---|---|---|
| String | 字符串 | set / get |
| Hash | 对象 | hset / hget |
| List | 列表 | lpush / rpop |
| Set | 去重集合 | sadd |
| ZSet | 排序集合 | zadd |
Hash 示例(像对象)
bash
hset user:1 name zhangsan age 18
hget user:1 name
七、Redis 数据会不会丢?(新手最关心)
Redis 默认在内存,但:
- 可以定期 落盘(RDB)
- 或 每次写都记日志(AOF)
📌 实际使用中:
Redis ≠ 绝对不丢
但 适合存"丢了也能恢复"的数据
八、Redis 和 Docker / 本地的关系(你刚好问过)
-
本地 Redis 和 Docker Redis:
- 是 两套完全独立的 Redis
-
Redis 客户端:
- 只关心 IP + 端口
- 不关心 Redis 在不在 Docker 里
九、你现在"最少要记住的 10 件事"
- Redis 是内存数据库
- Redis ≠ MySQL
- redis-server 才是服务端
- redis-cli 是客户端
- Redis 默认端口 6379
- 能 ping 通才算正常
- set / get 是最基本操作
- Redis 常用来做缓存
- Redis 数据可以自动过期
- 客户端 ≠ 服务端
十、一句话终极总结
Redis 是一个"高性能内存工具"
- redis-server:干活的
- redis-cli / 程序:用它的
你只需要记住:
能连上、能 ping、能 set/get,Redis 就算会用了