缓存穿透、击穿、雪崩都是什么意思?

本文详细介绍了缓存穿透、击穿和雪崩的现象及其解决办法。缓存穿透是指请求的数据既不在缓存中也不在数据库中,可能导致数据库压力过大;缓存击穿则是热点数据不在缓存中,请求全部落到数据库上;缓存雪崩则是大量缓存同时失效,请求洪流冲击数据库。解决方案包括使用布隆过滤器、设置热点数据永不过期、限流、设置缓存过期时间随机等。

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

一、缓存穿透
1.什么是缓存穿透?

缓存穿透说简单点就是大量请求的 key 是不合理的,根本不存在于缓存中,也不存在于数据库中 。这就导致这些请求直接到了数据库上,根本没有经过缓存这一层,对数据库造成了巨大的压力,可能直接就被这么多请求弄宕机了。
在这里插入图片描述

2.解决办法

1.接口层增加校验,如用户鉴权校验,id做基础校验,id<=0的直接拦截;
2.从缓存取不到的数据,在数据库中也没有取到,这时也可以将keyvalue对写为key-null,缓存有效时间可以设置短点,如30秒(设置太长会导致正常情况也没法使用)。这样可以防止攻击用户反复用同一个id暴力攻击。
3.采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的 bitmap中,一个一定不存在的数据会被这个 bitmap 拦截掉,从而避免了对底层存储系统的查询压力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值