目录
1.什么是缓存雪崩
就是存储在缓存里面的大量数据,在同一个时刻全部过期,原本缓存组件抗住的大部分流量全部请求到了数据库。导致数据库压力增加造成数据库服务器崩溃的现象。
1.1 导致雪崩的原因
- 缓存中间件宕机
- 缓存中大部分 key 都设置了相同的过期时间,导致同一时刻这些 key 都过期了。
1.2 如何解决
- 以对缓存中间件做高可用集群来避免
- 在失效时间上增加一个 1 到 5 分钟的随机值
- 用加锁( 最多的解决方案)或者队列的方式保证来保证不会有大量的线程对数据库一次性进行读写,从而避免失效时大量的并发请求落到底层存储系统上
2.什么是缓存穿透
指用户查询数据,在数据库没有,自然在缓存中也不会有。这样就导致用户查询的时候,在缓存中找不到,每次都要去数据库再查询一遍,然后返回空(相当于进行了两次无用的查询)。这样请求就绕过缓存直接查数据库,这也是经常提的缓存命中率问题
2.1 导致穿透的原因
- 恶意攻击:攻击者有意请求不存在的数据,以使得系统频繁访问数据库,造成拒绝服务攻击。
- 大量请求:如果一个不存在的热点数据被大量请求ÿ