Redis -缓存雪崩&缓存穿透

164 阅读1分钟

参考:blog.csdn.net/a745233700/…

缓存穿透(查不到)

情景:

当用户访问数据时先到缓存中去寻找,没有再到数据库去寻找

问题:

当大量用户访问同一数据时,由于缓存中没有就都到数据库中去获取,
给数据库造成了巨大的压力。

解决:

1. 加布隆过滤器
2. 出现Redis查不到数据,数据库也查不到数据的情况,我们就把这个key
保存到Redis中,设置value="null",并设置其过期时间极短,后面再出现
查询这个key的请求的时候,直接返回null,就不需要再查询数据库了。

缓存击穿(单个key过期)

问题:

某个热点key失效导致大量的访问直接访问数据库,导致数据库压力剧增

解决:

1. 设置热点数据永不过期
2. 加互斥锁

缓存雪崩(大量key过期)

问题:

缓存中的大量数据在同一时刻过期或redis宕机,导致大量访问数据库,压力剧增

解决

1. 限流降级- 加锁控制写缓存的线程数量。
2. 数据预热- 提前将数据缓存到redis中,使过期时间分布均匀
3. redis高可用-异地多活