Redis 缓存雪崩 |击穿 |穿透 概念及解决方案

2023-05-06,,

一、雪崩

1.概念

 指某一时间段,缓存集中过期失效,无数的请求绕开缓存,直接访问数据库。

2.解决方案

让redis数据永不过期,这种方式最可靠的、最安全的,但占用空间,内存消耗大,并且不能保持数据最新,所以需要根据具体的业务考虑

将缓存失效的时间分散开,比如每个key的过期时间都是随机的,防止同一时间大量数据过期的现象发生,就不会出现同一时间全部请求都访问数据库

可以启动服务熔断机制,暂停业务应用对缓存服务的访问,直接返回错误,但是暂停了业务应用访问缓存系统,其它的业务都无法正常的工作

创造redis集群,对数据库进行读写分离

2.击穿

1.概念

 大并发集中对一个点进行访问,当这个点失效瞬间,大并发穿透缓存直接访问数据库。

2.解决方案

互斥锁,保证同一时间只有一个业务线程更新缓存,未能获取互斥锁的请求,要么等待锁释放后重新读取缓存,要么就返回空值或者默认值
不给热点数据设置过期时间,由后台异步更新缓存,或者在热点数据准备要过期前,提前通知后台线程更新缓存以及重新设置过期时间

3.穿透

1.概念

 数据库和缓存中都没有一条数据,持续查询数据库,使数据库的访问压力过大

2.解决方案

接口层添加校验,如用户鉴权校验;id做基础校验,指定接口的请求方式,只接受 一种或几种 的请求方式
不仅在缓存取不到的数据,而且在数据库中也没有取到,这时可以将key-value写成key-null,缓存有效时间可以设置30秒(设置太长对导致正常情况下也无法使用),这样可以防止攻击用户反复用同一个id暴力攻击
布隆过滤器

Redis 缓存雪崩 |击穿 |穿透 概念及解决方案的相关教程结束。

《Redis 缓存雪崩 |击穿 |穿透 概念及解决方案.doc》

下载本文的Word格式文档,以方便收藏与打印。