返回首页

Redis入门1.1: 简介与安装

适用版本:Redis 7.2.x

Redis 是后端开发里几乎绕不开的一项基础组件。很多人第一次接触 Redis,往往是因为“缓存”这个词:接口慢了,要加缓存;数据库压力大了,要加缓存;排行榜、计数器、会话存储,也常常会想到 Redis。

但如果只是把 Redis 理解成“一个快一点的 Key-Value 数据库”,通常很快就会遇到新的问题:为什么它这么快?为什么它除了字符串,还支持列表、集合、有序集合?为什么它既能做缓存,也常被拿来做消息队列、分布式锁、限流和排行榜?

这篇文章的目标不是把 Redis 所有细节一次讲完,而是先建立一个可靠的入门认知:Redis 是什么、解决什么问题、怎么安装、怎么启动、怎么连接、怎么做最基本的验证。


一、Redis 是什么

Redis 的全称是 Remote Dictionary Server。从名字上看,它像一个“远程字典服务”,本质上是一种基于内存的键值型数据存储系统

它有几个非常鲜明的特征:

  1. 数据主要存放在内存中,因此读写速度非常快。
  2. 支持多种数据结构,不仅有 String,还有 Hash、List、Set、ZSet 等。
  3. 支持持久化,并不是“重启就全没了”,可以把内存数据写回磁盘。
  4. 支持高并发访问,适合做热点数据读写。
  5. 支持发布订阅、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,下次直接命中缓存,减少数据库压力。

示意流程:

  1. 先查 Redis
  2. 有值则直接返回
  3. 没值则查数据库
  4. 再把结果写回 Redis 并设置过期时间

2. 计数器

例如:

  • 页面浏览量 PV
  • 点赞数
  • 接口调用次数
  • 用户签到天数

Redis 的 INCRDECR 这类原子操作非常适合计数。

3. 会话存储

分布式系统里,如果应用部署了多个实例,把登录态放在单机内存里就不方便共享。Redis 可以作为统一的 Session 存储。

4. 排行榜

有序集合 ZSet 可以根据分数自动排序,非常适合:

  • 游戏积分榜
  • 销量榜
  • 活跃度榜
  • 热度榜

5. 消息与任务缓冲

List、Stream 等结构可以支持简单的消息队列或任务消费模型。


五、Redis 的安装方式

Redis 的安装方式很多,学习阶段常见的是以下三种:

  1. 本机直接安装:适合个人练习和命令学习。
  2. Docker 安装:适合开发环境快速启动和隔离。
  3. 云服务/托管 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

排查顺序建议是:

  1. Redis 服务是否已启动
  2. 主机和端口是否正确
  3. 是否配置了密码
  4. 防火墙或网络限制是否存在
  5. 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

注意:FLUSHDBFLUSHALL 都是高风险命令,练习时可以用,生产环境必须非常谨慎。


十四、小结

这篇文章完成了 Redis 入门的第一步,重点包括:

  • Redis 是什么,以及它和 MySQL 的角色差异
  • Redis 为什么快、为什么常用于缓存和状态存储
  • Redis 的典型业务场景
  • 本机与 Docker 的基本安装方法
  • 如何通过 redis-cli 验证服务是否正常
  • 初学者第一次上手时需要关注的配置与排错点

如果把 Redis 学习比作搭积木,那么这篇文章做的事情,就是先把“环境”和“整体认知”搭好。后续再学习具体数据结构和命令时,会更容易理解它们为什么存在、分别适合什么场景。


📝 版权声明:本文为原创技术博客,转载请注明出处。

如文章中存在错误或不准确之处,欢迎在评论区指正,感谢您的阅读与支持!

上一篇

25 | MySQL 生产环境实践清单

下一篇

Reds入门1.2: String 与 Hash