码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • redis 雪崩,穿透,击穿及解决方案


    一、缓存雪崩:

      1. 原因:

      缓存雪崩是指在我们设置缓存时大量采用了相同的过期时间,导致缓存在某一时刻同时失效,请求全部转发到DB,DB瞬时压力过重雪崩。

      2. 解决方案:

    1. 将失效时间分散,通过生成随机数使得key的过期时间为随机,防止集体过期。
    2. 使用多级架构,nginx缓存+redis缓存+其他缓存,不同层使用不同缓存,可靠性更强。
    3. 设置缓存标记,如果过期通知其他线程在后台更新实际的key。 这种方法对于性能非常友好,唯一不足的就是构建缓存时候,其余线程(非构建缓存的线程)可能访问的是老数据
    4. 使用锁或者队列的方式
    5. 使用排他锁,其他请求只能等待。

    二、缓存穿透:

      1.原因:

    缓存穿透是指大量数据查询一个不存在的数据,在流量大时,可能DB就挂掉了,要是有人利用不存在的key频繁攻击我们的应用,这就是漏洞。

      2. 解决方案:

    1. 采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被 这个bitmap拦截掉,从而避免了对底层存储系统的查询压力。
    2. 如果一个查询返回的数据为空(不管是数 据不存在,还是系统故障),仍然把这个空结果进行缓存,但它的过期时间会很短,最长不超过五分钟。

    三、缓存击穿:

        1.原因:

    热点key过期,大量数据访问过期key

    缓存在某个时间点过期的时候,恰好在这个时间点对这个Key有大量的并发请求过来,这些请求发现缓存过期一般都会从后端DB加载数据并回设到缓存,这个时候大并发的请求可能会瞬间把后端DB压垮。

        2. 解决方案:

    1.   提前对热点数据进行设置。对于新闻,某博等热点数据预先设置在redis中
    2.   监控数据,对热点数据实时调整key过期时长。
    3.   使用锁,加锁或者队列的方式保证缓存的单线 程(进程)写,从而避免失效时大量的并发请求落到底层存储系统上。

  • 相关阅读:
    MySQL 内部组件结构以及SQL执行逻辑
    LVGL 8.2图片缩放及旋转
    (二十八)大数据实战——Flume数据采集之kafka数据生产与消费集成案例
    iOS 使用runtime 解决按钮重复点击的问题
    Guava-RateLimiter详解
    busternet:Detecting copy-move image forgery with source/target localization
    Tomcat架构详解
    设计模式--适配器模式
    使用Node.js手撸一个建静态Web服务器,内部CV指南
    Dynamic Potential-Based Reward Shaping将势能塑形奖励函数拓展为F(s,t,s‘,t‘)
  • 原文地址:https://blog.csdn.net/2301_78106979/article/details/133590487
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号