- 缓存雪崩(Cache Avalanche):指在某个时间段内,大量缓存数据同时失效,导致大量请求直接访问数据库,造成数据库压力剧增,甚至引起数据库宕机。缓存雪崩通常是由于缓存数据设置了相同的过期时间,导致在同一时间大量缓存同时失效引起的。
解决方法:可以在设置缓存时,给缓存数据的过期时间增加一个随机值,避免大量缓存同时失效;另外,可以使用热点数据预加载、限流等方式来缓解缓存雪崩的影响。
- 缓存穿透(Cache Penetration):指恶意请求或者不存在的数据频繁访问缓存,由于缓存中不存在该数据,每次请求都会直接访问数据库,导致数据库压力增大。
解决方法:可以在缓存中对于不存在的数据设置一个空值,或者使用布隆过滤器等方式来过滤恶意请求,避免直接访问数据库。
- 缓存击穿(Cache Breakdown):指针对某一热点数据,由于缓存数据过期或者被删除,导致大量请求直接访问数据库,造成数据库压力增大。
解决方法:可以在缓存失效时,使用互斥锁或者分布式锁来避免大量请求同时访问数据库,同时可以提前异步加载热点数据到缓存中,避免缓存失效时直接访问数据库。