zoukankan      html  css  js  c++  java
  • 缓存数据库redis相关问题

    1缓存穿透:

        什么是缓存穿透,就是当一个用户发出请求,但是数据库不存在这个数据,那么redis缓存便不会记录这次访问的结果,那么这个用户若是一直发出这个请求,那么请求每次都会穿过缓存,访问到我们的数据库,这个就会增加数据库的压力,要是有人恶意攻击,那么就有可能造成数据库压力过大,甚至挂掉。

        解决方案:

          当用户访问数据库不存在的数据时,此时也可以把结果存到数据库,比如结果是null,当然这种无效的数据,那么它的失效时间可以设置短一点,比如一分钟,或者20-30秒,

    2缓存雪崩:

        缓存雪崩:顾名思义,就是redsi中存储的key在同一时间,大范围失效,如果访问量比较多,那么就会在同一时间,大量请求直接访问数据库,那么就会造成数据库压力过大,甚至挂掉。宕机。

        解决方案:给不同热度的数据设置不同过去时间,比较热门的数据可以将数据设置成永不过期,比较冷门的过期时间可以设置短一点。这样就可以防止key在同一时间,大范围失效。

    3缓存击穿:

        这个很好理解:就假如有一个热点数据,大家都在访问,那么当这个热点数据在缓存中失效的一瞬间,大量请求访问数据库,那么此时数据库就有可能挂掉。

          解决方案:像这种热点,一般可以设置为永不过期

  • 相关阅读:
    二叉树
    队列
    python3使用pdfminer3k解析pdf文件
    得到手机版新闻解析
    python连接redis并插入url
    Python使用requirements.txt安装类库
    (1366, "Incorrect string value: '\xF3\xB0\x84\xBC</...' for column 'content' at row 1")
    mysql中Incorrect string value乱码问题解决方案
    mysql命令
    requests ip代理池单ip和多ip设置方式
  • 原文地址:https://www.cnblogs.com/qmk-716/p/12151527.html
Copyright © 2011-2022 走看看