redis(2)

redis(2)
什么是缓存雪崩

设置缓存时许多资源采用了相同的过期时间,导致在某一时刻大量缓存失效,所有的请求转发到数据库,导致数据库瞬时压力过大所导致雪崩,他与缓存击穿的区别是,击穿是一个资源过期,同时多个请求对该资源进行访问;雪崩是在某一瞬间大量缓存过期。

解决方案

将缓存过期时间分散开,可以在原有过期时间后面添加一个随机时间,这样每一个缓存的过期时间重复率就会降低,这样在一定程度上可用避免大量资源缓存时间过期。

总结

穿透无中生有key,布隆过滤null隔离。
缓存击穿过期key,锁与非期解难题。
雪崩缓存过期key,过期时间要随机。

缓存穿透的原因是查询不存在的数据,解决的方法是采用布隆过滤器,或者将不存在的数据经数据库返回的空值存放在缓存中
缓存击穿的原因是过期了一个资源,这个资源还有大量请求访问,解决的方法是采用分布式锁,或者采用逻辑过期的方式解决。
缓存雪崩的原因是大量资源过期,所有的请求都去数据库访问,数据库压力瞬间增大,直接崩溃,解决的方法是过期时间不要
相同,这样极大可能会避免大量资源缓存过期。

你可能感兴趣的:(redis,redis,数据库,缓存)