接口网站开发,十堰企业网站制作公司,策划是做什么的,h5建站模板1 穿透: 两边都不存在#xff08;皇帝的新装#xff09; #xff08;黑名单#xff09; #xff08;布隆过滤器#xff09;
2 击穿#xff1a;一个热点的key失效了#xff0c;这时大量的并发请求直接到达数据库. #xff08;提前预热#xff09;
3 雪崩#xff1a…1 穿透: 两边都不存在皇帝的新装 黑名单 布隆过滤器
2 击穿一个热点的key失效了这时大量的并发请求直接到达数据库. 提前预热
3 雪崩大量key同时失效 避免大量的key同一时间失效错峰 1. 缓存雪崩
问题描述 缓存雪崩是指在某个时间段内大量缓存集中过期失效进而导致大量请求直接落到了数据库上数据库瞬间压力剧增可能导致数据库崩溃。比如如果多个缓存数据设置了相同的过期时间在过期那一刻原本由缓存支撑的请求都转到了数据库形成了流量“雪崩”。
解决办法
雪崩错峰处理
将redis内的数据设置一个时间段内随机失效时间
随机过期时间为每个缓存项的过期时间增加一个随机范围避免同一时刻大量缓存同时失效。分层缓存采用二级缓存策略一级缓存失效后立即尝试从二级缓存获取减轻数据库压力。设置热点数据永不过期或延长过期时间对于访问非常频繁的热点数据可以考虑设置永不过期或采取更长的有效期策略。后台异步刷新在缓存即将过期前后台异步更新缓存而不是等到用户请求触发时再实时更新。限流、熔断、降级在系统设计时加入限流措施当请求过多时进行熔断或服务降级减少对数据库的影响。集群化和数据分片通过集群化部署让缓存分散在多个节点上减小单点失效的风险。
3. 缓存击穿
问题描述 缓存击穿特指某个热点Key在缓存过期的瞬间大量并发请求恰好同时到达请求直通数据库导致数据库瞬时压力激增。 解决办法
提前预热调用
解决办法在大量访问请求前提前调用一次接口刷新失效时间
互斥锁Mutex Lock在缓存失效时不是立即去数据库查询而是先尝试获得锁只有拿到锁的请求才能访问数据库其他请求等待锁释放后再次尝试。延时双删策略在缓存失效时先删除缓存然后异步去数据库查询最新数据成功后再次放入缓存并且设置一个短时间的延迟在这个延迟期内如果有新的请求过来还可以继续依赖已删除的缓存。热点数据永不过期对于非常重要的热点数据可以考虑将其设置为永不过期然后通过后台定时任务或者其他机制定期更新缓存。 2. 缓存穿透
问题描述 缓存穿透是指查询一个根本不存在的数据缓存和数据库中都没有该数据但客户端仍持续发起请求导致每次请求都直接打到数据库上无法利用缓存减轻数据库的压力而且如果是恶意攻击可能引发严重的性能问题。 解决办法
黑名单 布隆过滤器将数据库中也没有的数据放入黑名单查询时先去redis查询然后查询redis黑名单然后再去查询数据库。
缓存空值对于查询结果为null的数据也在缓存中存储一份设定较短的有效期。布隆过滤器使用布隆过滤器提前拦截那些一定不存在的数据请求避免请求到达数据库。前端校验对于请求参数进行合法性和合理性校验减少无效请求进入后端。