zoukankan      html  css  js  c++  java
  • redis缓存雪崩穿透击穿及解决方案

    redis缓存穿透雪崩击穿
    缓存雪崩:redis缓存大量key在同一时间失效,导致大量请求打回到数据库(mysql),造成数据库挂掉。
    解决
    1.不要设置大量key在同一时间失效
    2.快失效时使用定时器再写入redis

    3.随机初始化失效时间

    4.redis集群,让热点key平均地分布到不同的redis节点上

    缓存穿透:redis和数据库都没有该数据,比如用户请求id=-1的数据(常见于黑客恶意大量攻击),redis没找到数据便会向数据库请求,这种数据相当于直接穿透redis。
    解决
    1.无论数据库查询的值是否为空,都缓存到redis,这样下一次再用同一个参数请求就不会穿透redis
    2.把用户ip拉黑
    3.检验请求的合法性
    4.布隆过滤器(请求数据库前筛选,如果布隆判断请求的数据不在数据库,直接pass)

    缓存击穿:redis中存在非常热点的key,当这个缓存key突然失效,大量的请求打回到数据库中
    解决
    1.设置该key不失效
    2.分布式锁(在redis和数据库间设置一个锁,抢到锁的线程就去数据库查数据再写入到redis,其他线程在redis找到数据就不会去抢分布式锁了)

  • 相关阅读:
    变量
    注释 & 缩进
    【oracle】生成AWR报告
    【Linux】awk指令
    rhel7.0替换centos yum源
    如何在乌班图上配置java开发环境
    如何在乌版图系统添加拼音输入法!
    如何让虚拟机中乌版图系统变大?
    如何重置虚拟机的乌版图系统的密码?
    虚拟机三种网络模式配置
  • 原文地址:https://www.cnblogs.com/glz666/p/14919202.html
Copyright © 2011-2022 走看看