缓存雪崩:缓存在同一时间大面积的失效,后面的请求都直接落到了数据库上,造成数据库短时间内承受大量请求。
这就好比雪崩一样,数据库的压力可想而知,可能直接就被这么多请求弄宕机了。
举个例子:系统的缓存模块出了问题比如宕机导致不可用。造成系统的所有访问,都要走数据库。然后数据库压力剧增,请求处理不及,造成宕机。
解决办法
1、针对 Redis 服务不可用的情况:
- 采用 Redis 集群和哨兵模式,避免单机出现问题整个缓存服务都没办法使用。
- 限流,避免同时处理大量的请求。
2、针对热点缓存失效的情况:
- 设置不同的失效时间比如随机设置缓存的失效时间。这样不同的key不会再同一时间失效,也就不会造成大量数据在一时间访问不到。
- 缓存永不失效。