• Redis缓存雪崩/缓存击穿/缓存穿透


    一、缓存雪崩:所有请求都到了数据库了,造成DB故障,从而引起所有应用服务器故障

    1. 缓存挂了或者缓存服务器重启

    2. 手动把所有缓存都删除了(flushall)

    3. 缓存没有挂,但预加载的key同时到期,或者集中在某一段时间过期

    二、缓存雪崩的解决方法

    1. 缓存挂了的情况

    a. 事发前:实现redis的高可用性(主从+sentinal+cluster)

    b. 事发时:本地内存缓存(二级缓存)+限流(hystrix)

    c. 事发后:Redis持久化,重启后从磁盘上加载数据,快速恢复

    2. 缓存没挂的情况

    预加载时,key的过期时间为随机值,防止同时过期

    三、缓存穿透

    1. 查询一个不存在的数据,由于没有从数据库里查到,就不放入缓存,所以不存在的数据每次都要到数据库里查询

    2. 请求的数据在缓存里大量不命中,导致请求到了数据库,就叫缓存穿透

    四、缓存穿透的解决方法

    1. 校验参数,对一定不存在的key进行过滤

    2. 把空对象也放入缓存,并设置一个较短的过期时间

    3. 布隆过滤器

    五、缓存击穿

    大量请求查询某个key,一直到这个key过期,此时大量请求会落到数据库

    六、缓存击穿的解决方法

    1. 为单独的key加锁

    2. 热点数据永不过期

  • 相关阅读:
    2018 eclipse安装反编译插件
    Buffer flip()方法
    区块链2
    Mist 转移默认区块存储位置方法
    区块链1
    如何在Ubuntu下安装”.deb“、”.bin“、”.tar.gz“、”.tar.bz2“格式的软件包!
    eclipse 性能调优之内存分配
    linux中搭建java开发环境
    在 Ubuntu 14.04 上安装 Ubuntu Tweak 0.8.8
    Ubuntu各个版本的介绍
  • 原文地址:https://www.cnblogs.com/june0816/p/11463036.html
Copyright © 2020-2023  润新知