Redis 从 0 到 1 系统教程(项目实战级)
你好!我会像老师上课一样,带你系统学习 Redis,从基础概念到项目实战,最终让你达到在项目中自由使用的水平。
这门课我会分成 8 个完整的课时,每个课时都有明确的学习目标、核心知识点、代码示例和实战练习。
第 1 课:Redis 入门与环境搭建
学习目标
完成本课后,你将掌握:
- Redis 的基本概念
- Redis 的核心特点
- Redis 的应用场景
- Windows/Linux 环境安装
- Redis 基础命令操作
1.1 Redis 是什么?
Redis(Remote Dictionary Server)是一个开源的、基于内存的高性能键值(Key-Value)数据库,也被称为:
数据结构服务器(Data Structure Server)
Redis 核心特点
| 特性 | 说明 |
|---|---|
| 内存存储 | 数据主要存在内存中,读写速度极快 |
| 多数据结构 | 支持 String、Hash、List、Set、ZSet 等 |
| 持久化 | 可以将内存数据保存到磁盘 |
| 高可用 | 支持主从复制、哨兵模式、集群模式 |
| 原子性 | 所有操作都是原子操作 |
内存存储
数据主要存储在内存中。
性能非常高:
| 指标 | 性能 |
|---|---|
| 读操作 | 10万+ 次/秒 |
| 写操作 | 8万+ 次/秒 |
多数据结构
Redis 不仅支持字符串,还支持丰富的数据结构:
| 数据结构 | 说明 |
|---|---|
| String | 字符串 |
| Hash | 哈希 |
| List | 列表 |
| Set | 集合 |
| ZSet | 有序集合 |
持久化
Redis 虽然是内存数据库,但支持持久化机制:
- RDB
- AOF
可以将数据保存到磁盘,避免服务器重启导致数据丢失。
高可用
Redis 支持:
- 主从复制(Master-Slave)
- Sentinel(哨兵)
- Cluster(集群)
满足企业级高可用需求。
原子性
Redis 所有命令都是原子操作。
这也是实现以下功能的基础:
- 分布式锁
- 分布式计数器
- 秒杀系统
- 限流系统
1.2 为什么项目中必须用 Redis?
Redis 解决的核心问题
1. 数据库性能瓶颈
将热点数据缓存到 Redis。
流程如下:
用户请求
↓
Redis
↓
MySQL
优先访问 Redis。
只有 Redis 没有数据时才访问数据库。
这样可以:
- 减少数据库压力
- 提高响应速度
- 提升系统吞吐量
2. 分布式系统问题
Redis 是分布式系统的重要组件。
常见应用:
- 分布式锁
- 分布式计数器
- 分布式会话
- 分布式限流
3. 实时业务场景
Redis 天生适合实时业务。
典型场景:
- 排行榜
- 消息队列
- 实时聊天
- 地理位置查询
- 热搜榜
性能对比
| 数据库 | 响应时间 |
|---|---|
| MySQL | 100~200ms |
| Redis | 1ms 左右 |
Redis 性能通常比 MySQL 快数十倍甚至上百倍。
1.3 Windows / Linux 环境搭建
Windows 安装(开发环境)
第一步:下载 Redis
下载地址:
https://github.com/microsoftarchive/redis/releases
推荐版本:
Redis-x64-3.2.100
第二步:解压
例如:
D:\Redis
第三步:启动服务端
双击:
redis-server.exe
第四步:启动客户端
双击:
redis-cli.exe
执行:
ping
返回:
PONG
表示安装成功。
Linux 安装(生产环境)
下载 Redis
wget https://download.redis.io/releases/redis-7.0.15.tar.gz
解压并编译
tar -zxvf redis-7.0.15.tar.gz
cd redis-7.0.15
make && make install
修改配置文件
vim redis.conf
修改以下配置:
daemonize yes
bind 0.0.0.0
requirepass yourpassword
配置说明:
| 配置项 | 作用 |
|---|---|
| daemonize yes | 后台运行 |
| bind 0.0.0.0 | 允许远程访问 |
| requirepass | 设置密码 |
启动 Redis
redis-server redis.conf
客户端连接
redis-cli -h localhost -p 6379 -a yourpassword
1.4 Redis 基本操作
设置键值对
set name "zhangsan"
获取值
get name
返回:
"zhangsan"
查看所有键
⚠️ 生产环境慎用,会阻塞 Redis。
keys *
判断键是否存在
exists name
返回:
1
表示存在。
返回:
0
表示不存在。
删除键
del name
设置过期时间
验证码场景:
setex code 60 "123456"
表示:
60 秒后自动删除
查看剩余生存时间
ttl code
返回值说明:
| 返回值 | 含义 |
|---|---|
| 正数 | 剩余秒数 |
| -1 | 永不过期 |
| -2 | 已过期 |
移除过期时间
persist code
查看数据类型
type name
返回:
string
本课总结
本课主要学习了:
- Redis 基本概念
- Redis 核心特点
- Redis 应用场景
- Windows 安装
- Linux 安装
- Redis 常用基础命令
课后练习
练习 1
安装 Redis 并成功启动服务。
练习 2
练习以下命令:
set
get
exists
del
ttl
persist
type
练习 3
设置一个 30 秒过期键。
观察:
ttl key
数值如何变化。
练习 4
创建不同类型的数据。
使用:
type key
查看对应类型。
下一课预告
第 2 课:Redis 核心数据结构详解
学习内容:
- String
- Hash
- List
- Set
- ZSet
以及它们在真实项目中的应用场景。