zoukankan      html  css  js  c++  java
  • Redis26:使用redis的原因,缓存穿透和缓存雪崩

    使用redis的原因,缓存穿透和缓存雪崩

    为什么使用redis而不使用map?

    map是本地缓存,随着jvm关闭而销毁,多实例时每个实例都要保存一份缓存。而redis是分布式缓存,多实例下只保存一份缓存,且提供持久化,即使服务器宕机数据也不会消失。

    缓存穿透

    访问大量没有做缓存的数据,导致大量请求落到数据库,数据库崩溃。

    解决方案:将所有存在的数据装入一个bitmap或者布隆过滤器中,一开始就把不存在数据的请求过滤掉,还可以查询数据库时无论数据存在还是不存在,都缓存一份空,这样短期内再访问就不会进入数据库了。

    缓存雪崩

    缓存同一时间大面积失效,导致很多请求落到数据库上导致数据库崩溃。

    解决方案:

    首先要设置合理的过期策略,过期时间通常要设置为固定时间+随机时间。

    其次要保证redis集群的高可用性,选择合适的持久化策略,使恢复的redis重新加载缓存。用本地的java缓存框架做缓存,请求先取java中的缓存,然后再查redis,如果都没有再查数据库。用限流组件来保证落到数据库的请求在一个合理的范围内,这样就能保证一部分用户使用正常,也能保证数据库不崩溃。被限流组件过滤掉的返回一个设计好的默认值或者提示。

  • 相关阅读:
    ArcGIS API for Python
    ArcGIS Engine二次开发:从入门到精通
    OAuth2.0是什么?
    ArcGIS如何使用ArcToolbox新建要素类
    后端如何返回json
    Flask框架和Django框架
    ArcGIS时间——ArcToolbox
    ArcGIS时区设置2-编辑器追踪属性
    使用ABAP代码生成二维码(QR Code)
    如何自行分析SAP WebClient UI开发环境里抛出的错误消息根源
  • 原文地址:https://www.cnblogs.com/yinyunmoyi/p/13200661.html
Copyright © 2011-2022 走看看