-
缓存雪崩
- 缓存同一时间大面积的失效,所以,后面的请求都会落到数据库上,造成数据库短时间内承受大量请求而崩掉
- 解决方案
- 事前:尽量保证整个redis集群的高可用性,发现机器宕机尽快补上。选择合适的内存淘汰策略。
- 事中:本地ehcache缓存+hystrix限流&降级,避免MySQL崩掉
- 事后:利用redis持久化机制保存的数据尽快恢复缓存
-
缓存穿透
- 缓存穿透说简单点就是大量请求的 key 根本不存在于缓存中,导致请求直接到了数据库上,根本没有经过缓存这一层
- 解决方案
- 参数校验
- 缓存无效 key
- 布隆过滤器
-
缓存击穿
- 热点缓存失效,导致后面的请求都落到数据库上,造成数据库短时间内承受大量请求,压力多大
- 解决方案
- 设置热点数据永远不过期
- 互斥锁
-
缓存雪崩与缓存击穿不同的是
- 击穿针对同一条数据,而雪崩是大量的缓存