- 缓存穿透、击穿、雪崩,是用 Redis 做缓存时最常被放在一起讨论的三个问题。它们都会让请求绕过缓存打到数据库,表现都是数据库压力骤增,但成因完全不同:一个是“查了不存在的东西”,一个是“热点 Key 恰好过期”,一个是“大量 Key 一起失效”。分不清三者就谈方案,很容易药不对症——给击穿问题加布隆过滤器,或者给雪崩问题只加一台数据库,都治标不治本。 一、先看一张对照表问题触发条件本质影响... 缓存穿透、击穿、雪崩,是用 Redis 做缓存时最常被放在一起讨论的三个问题。它们都会让请求绕过缓存打到数据库,表现都是数据库压力骤增,但成因完全不同:一个是“查了不存在的东西”,一个是“热点 Key 恰好过期”,一个是“大量 Key 一起失效”。分不清三者就谈方案,很容易药不对症——给击穿问题加布隆过滤器,或者给雪崩问题只加一台数据库,都治标不治本。 一、先看一张对照表问题触发条件本质影响...
- 讲清异步复制的丢失窗口、脑裂成因与写保护参数边界 讲清异步复制的丢失窗口、脑裂成因与写保护参数边界
- 哨兵三个核心参数的语义、取值建议与故障转移时间线 哨兵三个核心参数的语义、取值建议与故障转移时间线
- 1. 同一张图片,第二次请求到底发不发?浏览器第一次请求 banner.jpg,服务器返回 200 和图片内容。第二次再请求同一张图,有三种可能:不发请求,直接读本地缓存;发请求,服务器说“没变过,用你手里那份”,返回 304,不传图片;发请求,服务器说“变了”,返回 200 和新图片。哪种发生,取决于两道关卡:先过强缓存,再过协商缓存。两道关卡用的响应头不一样,分工也不一样。 2. 第一... 1. 同一张图片,第二次请求到底发不发?浏览器第一次请求 banner.jpg,服务器返回 200 和图片内容。第二次再请求同一张图,有三种可能:不发请求,直接读本地缓存;发请求,服务器说“没变过,用你手里那份”,返回 304,不传图片;发请求,服务器说“变了”,返回 200 和新图片。哪种发生,取决于两道关卡:先过强缓存,再过协商缓存。两道关卡用的响应头不一样,分工也不一样。 2. 第一...
- 本文面向企业级 Java 后端开发者,承接本系列前几篇接口幂等主题:幂等解决“同一请求重复提交只生效一次”,分布式锁解决“同一时刻只有一个线程进入临界区”。两者经常配合使用,但解决的问题并不相同。 一、为什么单机锁不够用synchronized、ReentrantLock 只在同一个 JVM 进程内有效。多实例部署时,两个实例可能同时进入临界区。典型示例场景:同一订单被两个实例同时处理,并发... 本文面向企业级 Java 后端开发者,承接本系列前几篇接口幂等主题:幂等解决“同一请求重复提交只生效一次”,分布式锁解决“同一时刻只有一个线程进入临界区”。两者经常配合使用,但解决的问题并不相同。 一、为什么单机锁不够用synchronized、ReentrantLock 只在同一个 JVM 进程内有效。多实例部署时,两个实例可能同时进入临界区。典型示例场景:同一订单被两个实例同时处理,并发...
- 设置 EXPIRE 不等于到点就删:惰性删除让冷 key 长期滞留,定期删除只随机抽样 20 个、删掉不足四分之一就停手。附 expired_keys 与 evicted_keys 的区别、8 种淘汰策略怎么选、volatile-* 在无 TTL key 上会完全失效的坑、内存碎片与复制缓冲区,以及排查顺序与五条实践结论。 设置 EXPIRE 不等于到点就删:惰性删除让冷 key 长期滞留,定期删除只随机抽样 20 个、删掉不足四分之一就停手。附 expired_keys 与 evicted_keys 的区别、8 种淘汰策略怎么选、volatile-* 在无 TTL key 上会完全失效的坑、内存碎片与复制缓冲区,以及排查顺序与五条实践结论。
- 从备份校验到切流收尾的八步恢复 runbook 从备份校验到切流收尾的八步恢复 runbook
- HTTP 304 的判定顺序:ETag 与 Last-Modified 谁先说话一个静态资源改了内容,浏览器却始终显示旧版本;换个场景,资源根本没动,每次刷新服务端都在重新传全量。两种现象看起来相反,根因常常是同一个:条件请求的判定顺序被理解错了。 两个校验器,两套比较规则条件请求靠两个请求头工作:If-None-Match,携带上次响应里的 ETag,做实体标签比较;If-Modifie... HTTP 304 的判定顺序:ETag 与 Last-Modified 谁先说话一个静态资源改了内容,浏览器却始终显示旧版本;换个场景,资源根本没动,每次刷新服务端都在重新传全量。两种现象看起来相反,根因常常是同一个:条件请求的判定顺序被理解错了。 两个校验器,两套比较规则条件请求靠两个请求头工作:If-None-Match,携带上次响应里的 ETag,做实体标签比较;If-Modifie...
- 你有没有遇到过这种情况:前端刚发了新版本,同事却说页面还是老样子,刷新几次才正常?多半是 HTTP 缓存“帮了倒忙”。这篇短文把强缓存和协商缓存一次讲清,再分享一个真实的踩坑经历。 一、为什么需要 HTTP 缓存浏览器每次请求都先问服务器拿资源,慢且费流量。HTTP 缓存让浏览器在一定条件下直接复用本地副本,减少请求次数、加快首屏、减轻服务器压力。代价是“新鲜度”需要管理,否则就会看到旧内容... 你有没有遇到过这种情况:前端刚发了新版本,同事却说页面还是老样子,刷新几次才正常?多半是 HTTP 缓存“帮了倒忙”。这篇短文把强缓存和协商缓存一次讲清,再分享一个真实的踩坑经历。 一、为什么需要 HTTP 缓存浏览器每次请求都先问服务器拿资源,慢且费流量。HTTP 缓存让浏览器在一定条件下直接复用本地副本,减少请求次数、加快首屏、减轻服务器压力。代价是“新鲜度”需要管理,否则就会看到旧内容...
- 分布式缓存一致性实战:从缓存穿透到双写一致摘要: 缓存用好了是加速器,用不好就是一致性灾难的源头。本文从一次真实的缓存雪崩复盘出发,讲清缓存穿透、击穿、雪崩的成因与解法,以及数据库与缓存双写场景下,如何用延迟双删、消息补偿和版本号把一致性拉回到可接受的范围。 一、背景:一次凌晨三点的缓存雪崩去年双十一大促前夜,我们的商品详情接口突然全线超时。排查发现,某个热点商品的缓存 key 在同一秒过... 分布式缓存一致性实战:从缓存穿透到双写一致摘要: 缓存用好了是加速器,用不好就是一致性灾难的源头。本文从一次真实的缓存雪崩复盘出发,讲清缓存穿透、击穿、雪崩的成因与解法,以及数据库与缓存双写场景下,如何用延迟双删、消息补偿和版本号把一致性拉回到可接受的范围。 一、背景:一次凌晨三点的缓存雪崩去年双十一大促前夜,我们的商品详情接口突然全线超时。排查发现,某个热点商品的缓存 key 在同一秒过...
- 很多接口变慢,并不是数据库不够快,而是每次请求都在重复计算相同的结果。商品详情、排行榜、配置信息这类读多写少的数据,完全可以放进缓存,让请求不再打到数据库。缓存看起来简单,真正上线后才会发现,它自己也会带来新问题:穿透、击穿和雪崩。一、缓存放在哪里最常见的做法是在应用和数据库之间加一层分布式缓存:请求先查缓存,命中直接返回,未命中再查数据库并回填。回填时要设置过期时间,更新频繁的数据给几分钟... 很多接口变慢,并不是数据库不够快,而是每次请求都在重复计算相同的结果。商品详情、排行榜、配置信息这类读多写少的数据,完全可以放进缓存,让请求不再打到数据库。缓存看起来简单,真正上线后才会发现,它自己也会带来新问题:穿透、击穿和雪崩。一、缓存放在哪里最常见的做法是在应用和数据库之间加一层分布式缓存:请求先查缓存,命中直接返回,未命中再查数据库并回填。回填时要设置过期时间,更新频繁的数据给几分钟...
- Docker 镜像为什么越拉越大:分层、缓存与构建顺序一个 Go 服务编译出 12MB 的二进制,打成镜像却是 800MB。docker history 一看,罪魁祸首是基础镜像带了完整构建工具链,以及每次 COPY 源码都让后面所有层失效。分层机制不是黑盒,几条命令就能把账算清楚。 每一层都是完整的差异文件镜像由一组只读层叠加而成,容器启动时在最上面加一个可写层。关键在于:每一层的体积等... Docker 镜像为什么越拉越大:分层、缓存与构建顺序一个 Go 服务编译出 12MB 的二进制,打成镜像却是 800MB。docker history 一看,罪魁祸首是基础镜像带了完整构建工具链,以及每次 COPY 源码都让后面所有层失效。分层机制不是黑盒,几条命令就能把账算清楚。 每一层都是完整的差异文件镜像由一组只读层叠加而成,容器启动时在最上面加一个可写层。关键在于:每一层的体积等...
- 缓存出问题的时候,表现常常一模一样:数据库突然被打满,接口大面积超时。但背后的原因可能完全不同。雪崩、击穿、穿透这三个词经常被混着用,实际上它们是三种不同的故障模式,解法也不一样。本文把三者分开讲清楚。缓存雪崩:大量缓存同一时间失效雪崩是指同一时间段内,大量缓存同时过期失效,请求全部落到数据库上,数据库瞬间被压垮。常见的原因是缓存设置了相同的过期时间,比如批量预热时统一设了 30 分钟,到点... 缓存出问题的时候,表现常常一模一样:数据库突然被打满,接口大面积超时。但背后的原因可能完全不同。雪崩、击穿、穿透这三个词经常被混着用,实际上它们是三种不同的故障模式,解法也不一样。本文把三者分开讲清楚。缓存雪崩:大量缓存同一时间失效雪崩是指同一时间段内,大量缓存同时过期失效,请求全部落到数据库上,数据库瞬间被压垮。常见的原因是缓存设置了相同的过期时间,比如批量预热时统一设了 30 分钟,到点...
- 从 RPO 反推 save 条件,用错峰与定时快照降低影响 从 RPO 反推 save 条件,用错峰与定时快照降低影响
- 一、缓存出问题,往往不是 Redis 慢了,而是防线没建很多团队用缓存的方式是这样的:业务先查 Redis,查不到再查数据库,查到就回填。平时跑得好好的,某天流量一上来,数据库突然被打满,服务跟着超时——回头一看,Redis 本身没慢,问题出在大量请求绕过了缓存,直接冲到了数据库。缓存的三大经典故障——穿透、击穿、雪崩——名字很像,但成因和解法完全不同。穿透是查了不存在的数据,击穿是热点 K... 一、缓存出问题,往往不是 Redis 慢了,而是防线没建很多团队用缓存的方式是这样的:业务先查 Redis,查不到再查数据库,查到就回填。平时跑得好好的,某天流量一上来,数据库突然被打满,服务跟着超时——回头一看,Redis 本身没慢,问题出在大量请求绕过了缓存,直接冲到了数据库。缓存的三大经典故障——穿透、击穿、雪崩——名字很像,但成因和解法完全不同。穿透是查了不存在的数据,击穿是热点 K...
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签