zoukankan      html  css  js  c++  java
  • 缓存穿透、缓存击穿和缓存雪崩 概念

    缓存穿透

    每次从缓存中都查不到数据,而需要查询数据库,同时数据库中也没有查到该数据,也没法放入缓存。也就是说,每次这个用户请求过来的时候,都要查询一次数据库。

    缓存根本没起作用,好像被穿透了一样,每次都会去访问数据库。

    这就是我们所说的:缓存穿透问题

    图中标红的箭头表示每次走的路线。

    缓存击穿

    有时候,我们在访问热点数据时。比如:我们在某个商城购买某个热门商品。

    为了保证访问速度,通常情况下,商城系统会把商品信息放到缓存中。但如果某个时刻,该商品到了过期时间失效了。

    此时,如果有大量的用户请求同一个商品,但该商品在缓存中失效了,一下子这些用户请求都直接怼到数据库,可能会造成瞬间数据库压力过大,而直接挂掉。

    流程图如下:

     

    缓存雪崩

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

    缓存雪崩目前有两种:

    1. 有大量的热门缓存,同时失效。会导致大量的请求,访问数据库。而数据库很有可能因为扛不住压力,而直接挂掉。

    2. 缓存服务器down机了,可能是机器硬件问题,或者机房网络问题。总之,造成了整个缓存的不可用。

    归根结底都是有大量的请求,透过缓存,而直接访问数据库了。

  • 相关阅读:
    leetcode 131. Palindrome Partitioning
    leetcode 526. Beautiful Arrangement
    poj 1852 Ants
    leetcode 1219. Path with Maximum Gold
    leetcode 66. Plus One
    leetcode 43. Multiply Strings
    pytorch中torch.narrow()函数
    pytorch中的torch.repeat()函数与numpy.tile()
    leetcode 1051. Height Checker
    leetcode 561. Array Partition I
  • 原文地址:https://www.cnblogs.com/ooo0/p/15747591.html
Copyright © 2011-2022 走看看