author:徐振东
createTime:2022-05-16
updateTime:2022-06-10
2022-06-10: 培训结束
# 缓存穿透与缓存雪崩
# 缓存处理流程
如图所示,在一般情况下,我们使用缓存有以下几个步骤。当一个请求过来的时候,我们先去Redis中查询数据,若数据存在,直接返回结果。不存在的话,然后再去数据库查询,接着再将结果缓存在Redis中,最后再返回结果。
# 缓存穿透
客户端请求的数据在Redis和数据库中都不存在,导致客户端的每次请求都落在了数据库上。
# 解决方案
- 数据库返回空后,仍向数据库写入数据,然后定时过期
- 添加布隆过滤器
# 缓存雪崩
百度百科中对雪崩的定义是这样的:当山坡积雪 (opens new window)内部的内聚力 (opens new window)抗拒不了它所受到的重力 (opens new window)拉引时,便向下滑动,引起大量雪体崩塌,这种自然现象 (opens new window)称作雪崩。
对应到Redis中的雪崩是指,在短时间内有大量的缓存失效
# 解决方案
- 永不过期
- 缓存的过期时间加上随机值
- 采购第三方Redis