跳转至

Redis:从缓存入门到日常运维

Redis 是把主要工作数据放在内存中的数据结构服务。可以先把它想成一个共享的高速储物柜:应用用 key 找到数据,柜子里的 value 可以是文字、一个对象、一组成员或排行榜。

例如商品信息原本每次都查 MySQL,应用把查询结果暂存在 Redis,之后重复查询就能少访问数据库。这是缓存,也是理解 Redis 最容易的入口。

它和 MySQL 怎么配合

用户请求商品 1001
  → 应用先查 Redis
       ├─ 找到了:直接返回缓存
       └─ 没找到:查 MySQL → 返回结果,并写入 Redis 供下次使用

MySQL 保存需要长期维护的商品记录,Redis 保存可过期、可重建的查询结果。这个流程由应用实现,安装 Redis 后不会自动替 MySQL 加缓存。

Redis 也可以保存计数、登录会话、实时排名和任务消息。能不能丢失、是否需要持久化、满了能不能淘汰,要根据这些数据的用途决定。会话或任务不能照搬普通商品缓存的策略。

为什么快,也会不会慢

内存访问、合适的数据结构、较少的命令处理开销和事件驱动网络处理,使 Redis 适合大量短小操作。它仍然要经过网络,也有 CPU、内存和带宽上限。

“单线程”主要指传统核心命令执行路径,不能理解为整个 Redis 进程永远只有一个线程;I/O、后台释放和持久化等可以涉及其他线程或进程,具体取决于版本和配置。昂贵命令、大 key 或长脚本仍可能阻塞其他请求。MySQL 也会使用内存缓存,不能简单把两者的区别理解为一个只读内存、另一个每次读磁盘。

按这个顺序读

顺序 内容 读完应该能解释什么
1 数据类型与常用命令 key、value、TTL 是什么,缓存、计数和排名怎样存
2 应用缓存与常见问题 查询、更新怎么走,穿透、击穿、雪崩是什么
3 持久化与内存管理 重启能否恢复,内存满了删什么,为什么还会 OOM
4 Docker Compose 部署与排障 配置放哪里、数据放哪里,怎么判断运行正常
5 复制、Sentinel 与 Cluster 高可用 主节点挂了谁接管,什么时候需要分片

命令示例以 Redis 7.2+ 的常见基础功能为范围;更新版本的 JSON、搜索或其他扩展能力按实际版本另行核对。先把基础链路跑通,再学习额外功能。

用一个练习串起来

先按部署页启动隔离实例,再写一个带 60 秒 TTL 的商品 key,读取并观察 TTL 递减。然后练习计数、Hash 和排行榜,最后尝试正常重启后的数据恢复。

当你能解释“为什么这次没读到 key:没写过、过期、淘汰,还是恢复失败”,就已经把基础概念连起来了;之后再研究主节点故障和集群扩容会更容易。