Redis 入门 01:学习路线与第一次连接

学习目标#

完成本课后,你能说清 Redis 与数据库的职责区别,启动实验环境,并通过一次写入、读取和过期验证连接成功。先完成 6 篇入门,再按顺序学习 8 篇进阶;第一次阅读可先跳过高可用实验,完成命令练习后再回看。

完整学习目录#

  1. Redis 入门 01:学习路线与第一次连接
  2. Redis 入门 02:键、命名与过期时间
  3. Redis 入门 03:String 与 Hash
  4. Redis 入门 04:List、Set 与 Sorted Set
  5. Redis 入门 05:缓存读写与失效处理
  6. Redis 入门 06:排行榜与计数器综合练习
  7. Redis 进阶 01:内存、过期与淘汰
  8. Redis 进阶 02:RDB、AOF 与备份恢复
  9. Redis 进阶 03:Pipeline、事务与 Lua
  10. Redis 进阶 04:缓存故障与数据一致性
  11. Redis 进阶 05:分布式锁与限流
  12. Redis 进阶 06:Pub/Sub 与 Streams
  13. Redis 进阶 07:复制、Sentinel 与 Cluster
  14. 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>>> 提示符。这里禁用持久化,重建容器后实验数据消失;进阶持久化课使用另一容器。端口仅绑定本机回环地址,其他机器不能通过宿主机端口连接。

实验:在 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,值为 hello,写入时直接指定 60 秒过期。答案:

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 命令

学习导航#

学习目录 · 下一课:Redis 入门 02:键、命名与过期时间

Redis 入门 01:学习路线与第一次连接
作者:LcooYa
CC BY-NC-SA 4.0
相关文章
随机文章