Redis:从缓存入门到日常运维¶
Redis 是把主要工作数据放在内存中的数据结构服务。可以先把它想成一个共享的高速储物柜:应用用 key 找到数据,柜子里的 value 可以是文字、一个对象、一组成员或排行榜。
例如商品信息原本每次都查 MySQL,应用把查询结果暂存在 Redis,之后重复查询就能少访问数据库。这是缓存,也是理解 Redis 最容易的入口。
它和 MySQL 怎么配合¶
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:没写过、过期、淘汰,还是恢复失败”,就已经把基础概念连起来了;之后再研究主节点故障和集群扩容会更容易。