缓存穿透 缓存击穿 缓存雪崩

本文详细介绍了缓存中的三大问题——缓存穿透、缓存击穿和缓存雪崩,以及针对这些问题的解决方案。缓存穿透是用户请求不存在的数据,导致大量请求直达数据库;解决方案是缓存空对象。缓存击穿是热点key失效时,高并发请求直接冲击数据库;使用分布式锁或设置热点数据永不过期可以缓解。缓存雪崩则是多个缓存同时过期,解决方案包括设置随机过期时间和分类商品不同缓存周期。这些策略有助于保护后端数据源,确保系统稳定运行。

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

一、缓存穿透

1.1 描述

    缓存穿透是指缓存和数据库中都没有数据,而用户不断发起请求则这些请求会穿过缓存直接访问数据库,如发起为id为“-1”的数据或id为特别大不存在的数据。假如有恶意攻击,就可以利用这个漏洞,对数据库造成压力,甚至压垮数据库。

 

1.2 解决方案

   缓存空对象:当存储层不命中时,创建空对象并将其缓存起来,同时会设置一个过期时间(避免控制占用更多的存储空间),之后再访问这个数据将会从缓存中获取,保护了后端数据源;

二、缓存击穿

2.1  描述

  缓存击穿,是指一个key非常热点,在不停的扛着大并发,大并发集中对一个key不停进行访问,当这个key在失效的瞬间,持续的大并发就穿破缓存,直接请求数据库,就像在一个屏障上凿开了一个洞。

 

2.2 解决方案

分布式锁:

  1. 设置热点数据永远不过期

  2. 加分布式锁

          

三、缓存雪崩 

3.1 描述

缓存雪崩,是指在某一个时间段,缓存集中过期失效。

3.2 解决方案

缓存数据的过期时间设置随机或不同分类商品缓存不同周期或热门类目的商品缓存永不过期

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值