Redis 入门 01:学习路线与第一次连接
学习目标#
完成本课后,你能说清 Redis 与数据库的职责区别,启动实验环境,并通过一次写入、读取和过期验证连接成功。先完成 6 篇入门,再按顺序学习 8 篇进阶;第一次阅读可先跳过高可用实验,完成命令练习后再回看。
完整学习目录#
- Redis 入门 01:学习路线与第一次连接
- Redis 入门 02:键、命名与过期时间
- Redis 入门 03:String 与 Hash
- Redis 入门 04:List、Set 与 Sorted Set
- Redis 入门 05:缓存读写与失效处理
- Redis 入门 06:排行榜与计数器综合练习
- Redis 进阶 01:内存、过期与淘汰
- Redis 进阶 02:RDB、AOF 与备份恢复
- Redis 进阶 03:Pipeline、事务与 Lua
- Redis 进阶 04:缓存故障与数据一致性
- Redis 进阶 05:分布式锁与限流
- Redis 进阶 06:Pub/Sub 与 Streams
- Redis 进阶 07:复制、Sentinel 与 Cluster
- Redis 进阶 08:排障、安全与毕业实战
原理:Redis 解决什么问题#
Redis 是内存数据结构服务器。客户端通过命令读写键,值可以是字符串、哈希或集合等结构。它常用于缓存、计数器、排行榜和消息处理。内存读取快,不代表所有命令都便宜:遍历大集合或运行很长的 Lua 脚本仍可能阻塞其他请求。
关系数据库通常保存业务事实;缓存保存可重新生成的副本。不要因为 Redis 支持持久化,就把“不会丢数据”当作默认保证。是否允许丢失、怎样备份、如何处理重复请求,是后续课程的重点。
本系列固定使用 Redis 7.4.11 的基础命令,不要求 Redis Cloud、模块或付费服务。官方最新文档可能包含更高版本功能,查看命令页时应同时核对版本信息。
环境准备:在宿主机终端执行#
安装并启动支持 Linux 容器的 Docker Desktop 或 Rancher Desktop。Windows 使用 PowerShell 7.3+(需保留命令中的空字符串参数),Linux/macOS 使用 Bash 或 Zsh。Windows PowerShell 5.1 的空参数传递行为不同,可换到 PowerShell 7 或 WSL Bash 执行,不要删掉 --save "" 的空值。第一次拉取镜像需要网络;容器名冲突时先检查已有容器,不要删除未知实例。
docker version
docker run -d --name redis-learning -p 127.0.0.1:6379:6379 redis:7.4.11 redis-server --appendonly no --save ""
docker exec redis-learning redis-server --version
docker exec -it redis-learning redis-cli
预期:Docker 返回服务端版本,run 返回容器 ID,Redis 版本为 7.4.11,最后进入 127.0.0.1<6379>>6379>> 提示符。这里禁用持久化,重建容器后实验数据消失;进阶持久化课使用另一容器。端口仅绑定本机回环地址,其他机器不能通过宿主机端口连接。
实验:在 redis-cli 中执行#
PING
SET learn:hello "Redis"
GET learn:hello
EXPIRE learn:hello 30
TTL learn:hello
依次预期 PONG、OK、Redis、1 和 0~30 之间的剩余秒数。等待超过 30 秒后,GET 返回 nil,TTL 返回 -2。键存在但没有过期时间时 TTL 是 -1。输出格式会因交互模式而显示引号或类型标记,不影响结果含义。
之后的 Redis 代码块不包含提示符,可以逐行粘贴。shell 代码块在宿主机执行,redis 代码块在 redis-cli 执行;不要混用两个终端。
常见错误#
- Docker 报无法连接 daemon:启动容器引擎后重新运行 docker version。
- 6379 已占用:检查原服务,或将宿主机端口改为 6380;本系列用 docker exec 连接容器内部,仍使用 6379。
- 把 docker exec 输入 redis-cli:它是宿主机命令,先执行 QUIT 退出。
- 重启后数据消失:本课的存储方式用于练习,不承担业务数据保存。
练习与参考答案#
建立 learn
SET learn:greeting hello EX 60
GET learn:greeting
TTL learn:greeting
SET 返回 OK,GET 返回 hello,TTL 不大于 60。解释为什么业务服务需要对 Redis 断连做处理:缓存是依赖,连接失败不能被当作“查到空值”,否则可能错误回源或覆盖真实数据。
清理#
UNLINK learn:hello learn:greeting
QUIT
整个系列结束后,仅对你创建的实验容器执行宿主机命令:
docker stop redis-learning
docker rm redis-learning
不要在共享实例运行 FLUSHALL 或 FLUSHDB。后续每课只清理自己的 learn: 前缀键。
官方参考#
Redis 入门 · 官方 Docker 镜像与标签 · SET 命令







