zoukankan      html  css  js  c++  java
  • Redis缓存中的常见问题

    缓存穿透:是指查询一个Redis和数据库中都不存在的数据。

    问题:查询一个Redis和数据库中都不存在的数据,大量请求去访问数据库,导致数据库宕机。

    解决办法:

    1、根据id查询,如果id是自增的,将id的最大值放到Redis中,在查询数据库之前,直接比较一下id。

    2、如果id不是整型,可以将全部的id放到set中,在用户查询之前,去set中查看一下是否有这个id。

    3、获取客户端的ip地址,可以将ip的访问添加限制。

    缓存击穿:是指查询一个Redis中没有但是数据库中存在的数据,并且这个数据是热点数据。

    问题:查询一个Redis中没有但是数据库中存在的数据,并且这个数据是热点数据,大量请求访问数据库,导致数据库宕机。

    解决办法:

    1、在访问的数据缓存中没有的时候,添加互斥锁,让少数请求可以访问数据库,避免数据库宕机。

    2、把热点数据的生存时间去掉(不推荐)

    缓存雪崩

    问题:当大量缓存数据同时到期,最终大量的请求去访问数据库,导致数据库宕机。

    结局办法:将缓存中数据的生存时间设置为随机时间。

    缓存倾斜:

    问题:大量的热点数据集中在一个Redis节点上,Redis无法承受住大量请求,从而导致Redis宕机。

    解决办法:

    1、扩展主从架构,搭建大量从节点,环节Reidis压力

    2、可以在Tomcat中做JVM缓存,在去Redis查询之前,先去Tomcat中查询,缓解Redis压力。

  • 相关阅读:
    js判断当前年龄
    获取手机号归属地
    关于vscode控制tab控制缩进2/4个空格
    vue中的 mvvm
    关于前端性能优化
    js 深拷贝
    关于js hasOwnPropetry // instanceof 整理
    node-sass 安装报错
    JS发送跨域Post请求出现两次请求的解决办法
    Vue面试复习
  • 原文地址:https://www.cnblogs.com/zz-1120-wtenlb/p/13939909.html
Copyright © 2011-2022 走看看