🎯 缓存与消息队列通关总结:从Redis数据结构到RocketMQ/Kafka,高并发架构核心组件全掌握(2026版)
📌 系列导航:《Java 100 天进阶之路》完整目录
恭喜你! 你已经完成了《Java 100 天进阶之路》缓存与消息队列阶段(第91~96篇) 的全部学习。
这是进阶篇中应用最广泛、面试频率最高的阶段之一——从 Redis 底层数据结构到持久化/集群/哨兵,从缓存三大杀手到分布式锁实战,从消息队列基础到 RocketMQ/Kafka 面试高频题。6 篇文章,覆盖了高并发架构中最核心的中间件考点。
本文是这一阶段的通关总结,用 一张学习路线图 + 三张速查表 + 面试题汇总 + 避坑清单,帮你把 6 篇精华全部串联起来。
📌 本阶段学习路线图

学习路径建议:
📚 各篇核心知识点速查
第91篇:Redis核心数据结构(2026版)
| String | SDS动态字符串,O(1)取长度,二进制安全 | Redis为什么快? |
| Hash | ListPack + HashTable(Redis 7.0+) | ZipList为什么被ListPack取代? |
| List | QuickList(ListPack + LinkedList) | List作为消息队列的缺点 |
| Set | IntSet + HashTable | 抽奖系统实现(SPOP/SRANDMEMBER) |
| ZSet | ListPack + SkipList + HashTable | ZSet为什么用跳表不用红黑树? |
| HyperLogLog | 基数估计算法,固定12KB | UV统计,误差0.81% |
| Bitmap | 位数组 | 签到、布隆过滤器 |
| Redis 7.0+ 核心变更 | ListPack替代ZipList | 彻底解决连锁更新问题 |
👉 查看完整文章
第92篇:Redis高级特性(2026版)
| RDB持久化 | 定期快照,恢复快但可能丢数据 | BGSAVE vs SAVE |
| AOF持久化 | 记录命令,最多丢1秒 | appendfsync三种策略 |
| 混合持久化 | RDB+AOF,Redis 4.0+ | 生产环境推荐方案 |
| 主从复制 | 全量(RDB+缓冲区)/增量(PSYNC2) | 读写分离实现 |
| 哨兵(Sentinel) | 自动故障转移,quorum选举 | 哨兵选举新主流程 |
| 集群(Cluster) | 16384哈希槽,水平扩展 | 数据分片与MOVED/ASK重定向 |
| Pipeline | 批量命令打包,减少RTT | 分批提交(每批≤1000) |
| KRaft模式 | 移除ZooKeeper,自研共识 | 2026年Kafka标准模式 |
👉 查看完整文章
第93篇:Redis实战应用:缓存策略与分布式锁(2026版)
| 缓存穿透 | 查询不存在数据 → 布隆过滤器 + 缓存空对象 | 如何防止恶意请求打爆DB? |
| 缓存击穿 | 热点Key过期 → 互斥锁(Redisson)或逻辑过期 | 互斥锁 vs 逻辑过期如何选择? |
| 缓存雪崩 | 大量Key同时过期 → 随机TTL + 高可用集群 | 如何防止缓存雪崩? |
| 布隆过滤器 | 位数组+多哈希函数,不存在一定准确 | Redisson RBloomFilter(持久化) |
| 分布式锁 | Redisson看门狗(WatchDog)自动续期 | 手写SETNX锁的缺陷 |
| 逻辑过期 | value+expireTime,无阻塞异步更新 | 适合容忍短暂不一致的场景 |
| 多级缓存 | Caffeine(本地)+ Redis(分布式) | 热点Key治理方案 |
👉 查看完整文章
第94篇:Redis面试高频题(2026版)
| Redis为什么快? | 纯内存 + IO多路复用 + 单线程 | epoll机制 |
| Redis 6.0+多线程IO | 仅网络收发多线程,核心命令单线程 | 兼顾高并发与原子性 |
| 缓存三大杀手 | 穿透/击穿/雪崩 | 区别与解决方案 |
| 内存淘汰策略 | allkeys-lru / allkeys-lfu / noeviction | 生产禁用noeviction |
| Big Key治理 | String>10KB,集合>1000元素 | UNLINK异步删除 |
| Lua脚本 | 强原子性,防止阻塞 | EVALSHA复用 |
| Redis Functions | Redis 7.0+,替代Lua脚本 | 2026加分项 |
| Sharded Pub/Sub | 集群模式下的高性能广播 | 2026加分项 |
| AI时代缓存优化 | Embedding缓存,LLM推理延迟优化 | 2026跨界加分项 |
👉 查看完整文章
第95篇:消息队列基础(RocketMQ/Kafka)(2026版)
| MQ三大作用 | 解耦、异步、削峰填谷 | 为什么使用消息队列? |
| 两大核心模型 | 点对点(Queue)vs 发布/订阅(Topic) | Kafka Consumer Group的双重角色 |
| RocketMQ核心 | NameServer + Broker + Topic + Tag | 事务消息原理(半消息+回查) |
| Kafka核心 | Partition + Offset + ISR + KRaft | ISR机制保证数据不丢失 |
| RocketMQ vs Kafka | 功能全面 vs 超高吞吐 | 如何选型? |
| 消息可靠性 | 生产端ACK + Broker端ISR + 消费端手动提交 | 三阶段保证不丢消息 |
| 零拷贝 | sendfile系统调用,跳过用户态 | Kafka为什么吞吐量高? |
👉 查看完整文章
第96篇:消息队列面试高频题(2026版)
| 消息丢失 | 生产端+Broker端+消费端三阶段防护 | 如何保证消息不丢失? |
| 重复消费 | 唯一ID+Redis SETNX / 数据库唯一键 | 幂等设计 |
| 顺序消息 | 同一业务键→同一分区→单线程消费 | 全局顺序 vs 分区内顺序 |
| 消息积压 | 临时扩容消费者 + 异步化处理 | 线上积压如何快速处理? |
| 死信队列(DLQ) | 重试超限后进入DLQ,人工介入 | RocketMQ死信队列处理 |
| Kafka幂等生产者 | enable.idempotence=true | 单分区内不重复 |
| KRaft模式 | 移除ZooKeeper,简化运维 | 2026加分项 |
👉 查看完整文章
🔥 本阶段高频面试题精选(30道必背)
Redis篇(18道)
消息队列篇(12道)
🧨 避坑清单(本阶段血泪教训)
Redis篇
| 缓存穿透 | 未校验请求参数直接查DB | 布隆过滤器 + 缓存空对象 + 参数校验 |
| 缓存击穿 | 热点Key使用普通TTL | 互斥锁(Redisson)或逻辑过期 |
| 缓存雪崩 | 所有Key相同TTL | 随机TTL + Redis集群 |
| 分布式锁 | 手写SETNX未设过期时间 | 使用Redisson(看门狗自动续期) |
| 分布式锁释放 | 未校验锁持有者 | Redisson自动处理 |
| Big Key | 无限制地向Hash/ZSet写入 | 定期扫描–bigkeys + UNLINK异步删除 |
| KEYS * | 生产环境使用KEYS * | 使用SCAN渐进式遍历 |
| Guava布隆过滤器 | 生产环境用Guava内存布隆 | 生产用Redisson RBloomFilter(持久化) |
| 大内存fork | 业务高峰期执行BGSAVE | 低峰期执行,调整overcommit_memory |
消息队列篇
| 消息丢失 | 生产端不处理发送结果 | 同步发送+ACK,失败落库重试 |
| 重复消费 | 未做幂等设计 | 唯一ID+Redis SETNX / 数据库唯一键 |
| 消息积压 | 忽略积压告警 | 临时扩容消费者 + 异步化处理 |
| 顺序消息 | 单分区全局顺序导致性能瓶颈 | 分区内顺序即可,避免全局顺序 |
| 消费者数 | 消费者数超过分区数 | Kafka消费者数≤分区数,多余空闲 |
| 消费耗时 | 消费逻辑耗时过长 | 快速ACK,异步处理 |
| Pipeline | 一次打包10万条命令 | 分批提交(每批≤1000) |
| 死信队列 | 忽略死信队列 | 配置maxReconsumeTimes,人工介入 |
🚀 下一步预告(第97~108篇)
缓存与消息队列阶段已完结,微服务与架构演进阶段(第97~108篇) 即将开启:
- 第97篇:微服务架构演进(单体→SOA→微服务→服务网格)
- 第98篇:服务注册与发现(Nacos/Eureka)
- 第99篇:网关与负载均衡(Gateway/OpenFeign/Ribbon)
- 第100篇:分布式事务与面试压轴(2PC/TCC/Seata)
👉 关注专栏 + 订阅,第一时间收到更新!
🎁 福利:本阶段全套知识点PDF
为方便你随时复习,我把这6篇的核心知识点、面试题、避坑清单整理成了一份 PDF速查手册(缓存与消息队列篇)。
获取方式:
- 关注我的CSDN账号(点击关注)
- 在本文评论区留言 “缓存MQ通关” 或 私信我
- 我会将PDF下载链接发送给你
📌 下一步行动
种一棵树最好的时间是10年前,其次是现在。 基础篇44篇 + 数据库进阶8篇 + 缓存/MQ进阶6篇已通关,微服务篇等着你继续征服!
👉 回到完整目录导航 | 订阅进阶篇
📌 本总结文章属于《Java 100 天进阶之路 | 从入门到上岗就业》系列。 缓存与消息队列阶段(第91~96篇)已完结,微服务篇即将启航。感谢一路同行,我们下一阶段见!


