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压力。

  • 相关阅读:
    Ubuntu安装配置samba
    AFNetworking 和 ASIHTTPRequest
    github代码托管
    Java使用poi包读取Excel文档
    Eclipse-设置保存时自动给变量加final
    Eclipse-设置格式化代码时不格式化注释
    Map的内容按字母顺序排序
    Mysql--mysqldump命令 备份数据库
    Mysql--alter命令
    Java IO 文件
  • 原文地址:https://www.cnblogs.com/zz-1120-wtenlb/p/13939909.html
Copyright © 2011-2022 走看看