分布式-缓存防穿透 、雪崩

本文详细探讨了缓存穿透的预防措施,包括缓存空对象和使用布隆过滤器,并对两种方法进行了对比。接着讨论了缓存雪崩的解决方案,如保证缓存服务高可用、依赖隔离组件和提前演练。针对缓存热点key的重建优化,提出了互斥锁和永远不过期的策略。最后提到了缓存与数据一致性问题及Redis危险命令的重命名、禁用,以增强服务器安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、缓存穿透预防及优化

缓存穿透是指查询一个根本不存在的数据,缓存层和存储层都不会命中,但是出于容错的考虑,如果从存储层查不到数据则不写入缓存层,如图 11-3 所示整个过程分为如下 3 步:

  • 1.缓存层不命中
  • 2.存储层不命中,所以不将空结果写回缓存
  • 3.返回空结果

缓存穿透将导致不存在的数据每次请求都要到存储层去查询,失去了缓存保护后端存储的意义。

1.1 缓存穿透模型

缓存穿透问题可能会使后端存储负载加大,由于很多后端存储不具备高并发性,甚至可能造成后端存储宕掉。通常可以在程序中分别统计总调用数、缓存层命中数、存储层命中数,如果发现大量存储层空命中,可能就是出现了缓存穿透问题。

造成缓存穿透的基本有两个

  • 第一,业务自身代码或者数据出现问题
  • 第二,一些恶意攻击、爬虫等造成大量空命中,下面我们来看一下如何解决缓存穿透问题。

1.2 缓存穿透的解决方法

1.2.1 缓存空对象

如下图所示,当第 2 步存储层不命

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有恒则成

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值