一、缓存雪崩
1.什么是缓存雪崩?
当某一个时刻出现大规模的缓存失效的情况,那么就会导致大量的请求直接打在数据库上面,导致数据库压力巨大,如果在高并发的情况下,可能瞬间就会导致数据库宕机。这时候如果运维马上又重启数据库,马上又会有新的流量把数据库打死。这就是缓存雪崩
简单来说缓存雪崩是指缓存中数据大批量到过期时间,而查询数据量巨大,引起数据库压力过大甚至宕机
2、造成缓存雪崩的原因
造成缓存雪崩的关键在于在同一时间大规模的key失效。
主要原因一般有两个:
1.Redis宕机
2.采用了相同的过期时间
那么问题来了,我们应该怎样避免或者说是预防Redis的雪崩呢
其实在原有的失效时间上加上一个随机值,这样就避免了因为采用相同的过期时间导致的缓存雪崩。
如果真的发生了缓存雪崩,我们应该怎么办?
1、使用熔断机制。
2、提高数据库的容灾能力,可以使用分库分表,读写分离的策略。
3、为了防止Redis宕机导致缓存雪崩的问题,可以搭建Redis集群,提高Redis的容灾性
注意:
容灾(Disaster Tolerance),就是在自然灾害、设备故障、人为操作破坏等的灾难发生时,在保证生产系统的数据尽量少丢失的情况下,保持生存系统的业务不间断地运行。