缓存穿透、缓存击穿、缓存雪崩

缓存穿透

       缓存穿透的解释是,数据既不在缓存中也不存在于数据库中,造成每次查询都会对缓存和数据库进行查询。比如:有人恶意用不存在的id参数进行接口调用,每次调用都需要穿透缓存进行数据库查询;

   缓存穿透解决方案

 ip限流:

 参数合法性验证:

    布隆过滤器(存在问题):

    缓存空值;

 

缓存击穿

     缓存击穿的原因是某个热点数据的缓存失效,导致大量的请求直接进行数据库查询

    缓存击穿的解决方案:

        热点数据访问加锁

        自动续期

        缓存不过期

缓存雪崩

前面已经聊过缓存击穿问题了。

而缓存雪崩是缓存击穿的升级版,缓存击穿说的是某一个热门key失效了,而缓存雪崩说的是有多个热门key同时失效。看起来,如果发生缓存雪崩,问题更严重

雪崩可能的原因:

     1.缓存服务器down机

     2.多个热点数据同时失效

雪崩的解决方案:

     1.过期时间设置增加随机数或设置永不过期

     2.缓存服务器高可用

 

以上的方案都是针对具体问题的解决方案,在实际生产中,有一些通用的解决方案

    1.合理的限流策略

    2.增加系统各部分的报警阈值并积极响应

    3.数据合法性判断,将非法请求在最开始就拦截住

   4. 合理的规划系统资源,并及时根据重大事件或者活动进行资源的拓展和响应升级;

 

posted @ 2022-11-18 21:35  FOEVERYANG  阅读(18)  评论(0编辑  收藏  举报