适用版本:Redis 7.2.x
Redis 是后端开发里几乎绕不开的一项基础组件。很多人第一次接触 Redis,往往是因为“缓存”这个词:接口慢了,要加缓存;数据库压力大了,要加缓存;排行榜、计数器、会话存储,也常常会想到 Redis。
但如果只是把 Redis 理解成“一个快一点的 Key-Value 数据库”,通常很快就会遇到新的问题:为什么它这么快?为什么它除了字符串,还支持列表、集合、有序集合?为什么它既能做缓存,也常被拿来做消息队列、分布式锁、限流和排行榜?
这篇文章的目标不是把 Redis 所有细节一次讲完,而是先建立一个可靠的入门认知:Redis 是什么、解决什么问题、怎么安装、怎么启动、怎么连接、怎么做最基本的验证。
一、Redis 是什么
Redis 的全称是 Remote Dictionary Server。从名字上看,它像一个“远程字典服务”,本质上是一种基于内存的键值型数据存储系统。
它有几个非常鲜明的特征:
- 数据主要存放在内存中,因此读写速度非常快。
- 支持多种数据结构,不仅有 String,还有 Hash、List、Set、ZSet 等。
- 支持持久化,并不是“重启就全没了”,可以把内存数据写回磁盘。
- 支持高并发访问,适合做热点数据读写。
- 支持发布订阅、Lua、事务、过期时间等机制,能覆盖很多业务场景。
如果用一句更容易理解的话概括:
Redis 是一个高性能、支持丰富数据结构、以内存操作为主的数据存储系统,常用于缓存、计数、会话、队列、排行榜等场景。
二、Redis 为什么这么常用
1. 读写速度快
传统关系型数据库的数据主要落在磁盘上,虽然也有缓存机制,但访问路径依旧相对复杂。Redis 直接以内存为核心工作区域,天然拥有更低的访问延迟。
这也是为什么很多系统会把“经常访问但变化不频繁”的数据放到 Redis 中,例如:
- 用户基础信息缓存
- 商品详情缓存
- 首页热点内容缓存
- 接口调用次数统计
- 验证码与短时 token
2. 数据结构丰富
Redis 不只是简单的 key -> value。它提供了适合不同业务语义的数据结构。
例如:
- String:适合缓存 JSON、计数器、令牌
- Hash:适合存对象字段,如用户信息
- List:适合消息队列、时间线
- Set:适合去重、标签集合、共同关注
- ZSet:适合排行榜、带权重排序
这意味着很多原本需要在业务代码里自己维护的数据逻辑,可以直接借助 Redis 原生命令完成。
3. 天然适合做“临时性数据”
Redis 支持过期时间(TTL)。很多业务天然就有“过一会儿自动失效”的需求,比如:
- 登录验证码 5 分钟失效
- 防重复提交 token 10 分钟失效
- 限流窗口 1 分钟过期
- 登录状态 7 天过期
对这类场景,Redis 比数据库更顺手。
三、Redis 与 MySQL 的角色区别
初学者经常会问:既然 Redis 很快,那是不是可以替代 MySQL?
通常不能简单替代,因为两者定位并不一样。
| 对比项 | Redis | MySQL |
|---|---|---|
| 核心定位 | 内存型数据存储/缓存/高并发读写 | 关系型持久化数据库 |
| 擅长场景 | 缓存、计数器、排行榜、会话、限流 | 事务、关系查询、复杂条件查询 |
| 数据模型 | Key-Value + 多数据结构 | 表、行、列、索引 |
| 查询能力 | 简单按 key 或结构命令访问 | SQL 查询能力强 |
| 数据持久性 | 有持久化,但以内存为主 | 以磁盘持久化为核心 |
在多数业务系统里,常见组合方式是:
- MySQL 存核心业务数据
- Redis 存高频访问、短时状态、热点数据
也就是说,Redis 更多是“加速层”和“状态层”,不是简单替代关系型数据库。
四、Redis 的典型使用场景
1. 缓存
这是最常见的场景。把数据库查询结果放到 Redis,下次直接命中缓存,减少数据库压力。
示意流程:
- 先查 Redis
- 有值则直接返回
- 没值则查数据库
- 再把结果写回 Redis 并设置过期时间
2. 计数器
例如:
- 页面浏览量 PV
- 点赞数
- 接口调用次数
- 用户签到天数
Redis 的 INCR、DECR 这类原子操作非常适合计数。
3. 会话存储
分布式系统里,如果应用部署了多个实例,把登录态放在单机内存里就不方便共享。Redis 可以作为统一的 Session 存储。
4. 排行榜
有序集合 ZSet 可以根据分数自动排序,非常适合:
- 游戏积分榜
- 销量榜
- 活跃度榜
- 热度榜
5. 消息与任务缓冲
List、Stream 等结构可以支持简单的消息队列或任务消费模型。
五、Redis 的安装方式
Redis 的安装方式很多,学习阶段常见的是以下三种:
- 本机直接安装:适合个人练习和命令学习。
- Docker 安装:适合开发环境快速启动和隔离。
- 云服务/托管 Redis:适合生产环境。
这篇先以最容易上手的本机安装和 Docker 安装为主。
六、macOS / Linux 下安装 Redis
1. macOS 使用 Homebrew 安装
brew update
brew install redis
安装完成后,可以查看版本:
redis-server --version
redis-cli --version
启动 Redis:
redis-server
如果希望以服务方式启动:
brew services start redis
停止服务:
brew services stop redis
2. Ubuntu / Debian 安装
sudo apt update
sudo apt install redis-server -y
查看版本:
redis-server --version
启动服务:
sudo systemctl start redis-server
sudo systemctl status redis-server
设置开机自启:
sudo systemctl enable redis-server
七、使用 Docker 安装 Redis
如果你不想污染本机环境,或者希望快速得到一个可用实例,Docker 是很方便的方式。
拉取并运行 Redis 7.2:
docker run -d \
--name redis72 \
-p 6379:6379 \
redis:7.2
查看容器状态:
docker ps
进入 Redis CLI:
docker exec -it redis72 redis-cli
如果希望挂载配置文件和数据目录,后续可以再补充 volume 配置。学习阶段先以“能启动、能连接、能执行命令”为第一目标即可。
八、启动 Redis 后如何验证是否可用
启动成功后,最直接的验证方式就是使用 redis-cli 连接并执行 PING。
redis-cli
进入交互界面后执行:
127.0.0.1:6379> PING
PONG
看到 PONG,说明 Redis 服务已经正常响应。
再做一个最小读写测试:
127.0.0.1:6379> SET site "redis-demo"
OK
127.0.0.1:6379> GET site
"redis-demo"
这表示:
- 服务启动正常
- 客户端连接正常
- 基本读写正常
九、认识 Redis 的默认连接参数
初学阶段至少要知道这几个默认值:
- 默认主机:
127.0.0.1 - 默认端口:
6379 - 默认数据库:
0
指定主机和端口连接:
redis-cli -h 127.0.0.1 -p 6379
如果实例配置了密码:
redis-cli -h 127.0.0.1 -p 6379 -a yourpassword
进入之后,也可以执行:
AUTH yourpassword
不过要注意,生产环境里不建议把密码明文写在命令历史中,更推荐使用配置文件、环境变量或者更安全的接入方式。
十、Redis 配置文件你需要先知道什么
Redis 常见配置文件名通常是 redis.conf。学习阶段不需要一上来就把所有配置项搞懂,但建议先认识下面这些高频配置:
1. bind
用于指定监听地址。
bind 127.0.0.1
如果只绑定本地地址,外部机器就无法直接访问,更安全。
2. port
指定端口号。
port 6379
3. requirepass
设置访问密码。
requirepass yourpassword
4. appendonly
是否开启 AOF 持久化。
appendonly yes
5. daemonize
是否以守护进程方式运行。
daemonize yes
如果你是本机调试,前台运行更方便观察日志;如果是服务部署,再考虑后台运行。
十一、第一次使用时常见问题
1. 端口被占用
启动时如果提示 6379 已被占用,说明本机已经有 Redis 或其他程序占用了该端口。可以:
- 停掉已有服务
- 改配置文件端口
- Docker 映射为其他端口
例如:
docker run -d --name redis72 -p 6380:6379 redis:7.2
2. 连不上 Redis
排查顺序建议是:
- Redis 服务是否已启动
- 主机和端口是否正确
- 是否配置了密码
- 防火墙或网络限制是否存在
bind是否限制了外部访问
3. 重启后数据没了
这通常与持久化配置有关。Redis 并不是天然“永不丢数据”,是否保留数据要看:
- 是否开启 RDB / AOF
- 数据目录是否正确
- Docker 容器是否挂载持久卷
这属于后续进阶内容,但入门阶段至少要知道:
Redis 快,不等于不需要关心数据持久化。
十二、初学者实践建议
1. 先把 CLI 用熟
很多人一上来就写代码接 Redis,结果命令都不熟,遇到问题排查困难。建议先通过 redis-cli 把常见命令敲一遍。
2. 先理解数据结构,再写业务代码
Redis 的强大之处不是“有个缓存”,而是“有多种数据结构可以表达业务语义”。如果对 String、Hash、List、Set、ZSet 没概念,后面很容易滥用。
3. 从本机单实例开始
不要一开始就研究集群、哨兵、主从复制。先把以下问题搞明白:
- Redis 怎么启动
- 怎么连接
- 怎么存值取值
- 怎么设置过期时间
- 怎么查看 key
- 怎么删除 key
4. 养成验证习惯
每执行一条写命令,都紧跟一条读命令验证。比如:
SET name "alice"
GET name
这是学习 Redis 非常高效的方式。
十三、快速上手命令清单
下面给出一组适合安装完成后立即练习的命令:
PING
SET name "redis"
GET name
EXISTS name
DEL name
GET name
带过期时间的写法:
SET code "123456" EX 60
TTL code
查看当前数据库 key 数量:
DBSIZE
切换数据库:
SELECT 1
清空当前库:
FLUSHDB
清空所有库:
FLUSHALL
注意:
FLUSHDB和FLUSHALL都是高风险命令,练习时可以用,生产环境必须非常谨慎。
十四、小结
这篇文章完成了 Redis 入门的第一步,重点包括:
- Redis 是什么,以及它和 MySQL 的角色差异
- Redis 为什么快、为什么常用于缓存和状态存储
- Redis 的典型业务场景
- 本机与 Docker 的基本安装方法
- 如何通过
redis-cli验证服务是否正常 - 初学者第一次上手时需要关注的配置与排错点
如果把 Redis 学习比作搭积木,那么这篇文章做的事情,就是先把“环境”和“整体认知”搭好。后续再学习具体数据结构和命令时,会更容易理解它们为什么存在、分别适合什么场景。
📝 版权声明:本文为原创技术博客,转载请注明出处。
如文章中存在错误或不准确之处,欢迎在评论区指正,感谢您的阅读与支持!