《Redis 从入门到精通:核心原理、高并发实战与架构演进》博客提纲
写在发布之前:本文暂且只是简单的列出来了一个提纲,博主自己也在学习,会随着自己的学习进度进行调整完成某一部分,这份提纲或许有不完善的地方还请各位大佬指证出来,小弟一定认真学习,后面可能会单篇的发布一部分内容,不一定会出现在这个提纲中间,在全部学完了以后会总结并且在本文中总结
一、 引言:为什么我们需要 Redis?
1.1 传统数据库的瓶颈:简述 MySQL 等关系型数据库在高并发、低延迟场景下的痛点(磁盘 I/O 瓶颈)。
1.2 Redis 的核心优势:基于内存的极速读写、丰富的数据结构、单线程模型(避免上下文切换与锁竞争)及 I/O 多路复用机制。
1.3 本文阅读指南:介绍博客的脉络,从基础语法到架构设计,再到高并发实战,带领读者完成从“会用”到“精通”的跨越。
二、 基础篇:Redis 核心数据结构与选型策略
2.1 五种基础数据结构及应用场景
String:最基础的键值对(缓存、计数器、分布式锁)。
Hash:对象存储利器(用户信息、购物车)。
List:双向链表(消息队列、最新列表)。
Set:无序集合(去重、交集/并集运算,如共同好友)。
Sorted Set (ZSet):有序集合(排行榜、延时队列)。
2.2 特殊数据结构扩展
Bitmap:签到、在线状态统计。
HyperLogLog:海量 UV 统计(低内存消耗)。
Geo:地理位置计算(附近的人)。
2.3 数据结构选型原则:如何根据业务需求(是否需要排序、是否需要集合运算等)选择最合适的数据结构。
三、 进阶篇:持久化机制与运行模式
3.1 数据不丢失的基石:持久化策略
RDB (快照):定时生成全量二进制快照,恢复快,但可能丢失最后一次快照后的数据。
AOF (追加日志):记录每条写命令,数据更安全,但文件较大、恢复较慢。
混合持久化:生产环境最佳实践(RDB 全量备份 + AOF 增量补充)。
3.2 Redis 的部署模式演进
主从复制 (Master-Slave):读写分离,提升读性能。
哨兵模式 (Sentinel):自动故障转移,解决单点故障问题。
集群模式 (Redis Cluster):数据分片,突破单机内存瓶颈,实现高可用与水平扩展。
四、 核心篇:缓存设计的三大经典“灾难”与解决方案
4.1 缓存穿透(查询不存在的数据)
问题本质:恶意攻击或业务漏洞导致请求绕过缓存直达数据库。
解决方案:布隆过滤器(Bloom Filter)前置拦截、缓存空值(短 TTL)、接口参数校验。
4.2 缓存击穿(热点 Key 过期)
问题本质:高并发下,某个热点 Key 在过期的瞬间,海量请求同时打到数据库。
解决方案:互斥锁(分布式锁,仅允许一个线程重建缓存)、逻辑过期(大厂首选,Value 携带过期时间,异步刷新,物理永不过期)。
4.3 缓存雪崩(大规模失效或宕机)
问题本质:大量 Key 在同一时间集中过期,或 Redis 服务整体宕机。
解决方案:TTL 加随机值(错峰过期)、多级缓存(本地缓存 Caffeine 兜底)、Redis 高可用架构、网关限流与熔断降级。
五、 高阶篇:缓存与数据库的双写一致性难题
5.1 为什么一致性这么难?:并发读写下的时序问题。
5.2 常见更新策略对比
先更新 DB,再删除缓存(Cache-Aside 模式,业界推荐)。
先删除缓存,再更新 DB(易导致脏数据回写)。
延迟双删策略。
5.3 终极一致性方案
基于消息队列(MQ)的异步通知重试机制。
基于 Canal 监听 Binlog 的无侵入同步方案。
六、 实战与避坑篇:生产环境最佳实践
6.1 内存淘汰策略:当内存写满时,Redis 的 8 种淘汰策略(如 allkeys-lru、volatile-ttl)及选型建议。
6.2 生产环境三大避坑指南
大 Key 问题:导致网络阻塞和内存倾斜,如何排查与拆分。
热 Key 问题:单节点压力过大,如何通过本地缓存或拆分 Key 解决。
缓存与 DB 一致性陷阱:不要迷信强一致性,拥抱最终一致性。

被折叠的 条评论
为什么被折叠?



