zoukankan      html  css  js  c++  java
  • 缓存穿透 缓存雪崩 缓存击穿

    1.缓存穿透

    是指在缓存未找到数据的时候去查询数据库的机制作用下,若流量大的时候砸到数据库上导致数据库挂掉。

    2.缓存雪崩

    是指缓存的过期时间设在同一时间,若特定时间全部过期,则导致请求全部砸到数据库上,导致数据库挂掉。

    3.缓存击穿

    是指某个热点Key 刚好失效,还没来得loadDb的间隔期 数据库已经挂掉。

    如下使用redis.setnx(互斥)去loadDB,成功了返回,不成功延时重试下。

    public String get(key) {
          String value = redis.get(key);
          if (value == null) { //代表缓存值过期
              //设置3min的超时,防止del操作失败的时候,下次缓存过期一直不能load db
    	     if (redis.setnx(key_mutex, 1, 3 * 60) == 1) {  //SET if Not eXists 不存在的时候 才设置 代表设置成功
                          value = db.get(key);
                          redis.set(key, value, expire_secs);
                          redis.del(key_mutex);
                  } else {  //这个时候代表同时候的其他线程已经load db并回设到缓存了,这时候重试获取缓存值即可
                          sleep(50);
                          get(key);  //重试
                  }
              } else {
                  return value;      
              }
     }
    

      

  • 相关阅读:
    第三次迭代目标
    UML用例图以及时序图
    第一次迭代目标完成情况及感想
    第四次迭代感想
    数据流图与数据流程图的区别
    第三次迭代感想
    速达的用例图与时序图
    第一次迭代的感想
    速达的WBS
    NABCD的分解
  • 原文地址:https://www.cnblogs.com/Wilson6/p/9076663.html
Copyright © 2011-2022 走看看