当前位置: 首页 > news >正文

缓存雪崩、缓存穿透、缓存击穿分别是什么?如何解决?

缓存中存放的大多都是热点数据,目的就是从缓存中获取数据,而不用直接访问数据库,从而提高查询效率

  1. 缓存雪崩

概念

  • 指缓存在同一时间大面积失效,后面的请求直接访问数据库,导致数据库短时间内压力过大而崩溃(缓存无数据,数据库有数据)

解决方案

  • 设置过期时间时,增加一点随机值,防止大量缓存数据同时过期
  • 缓存预热(程序刚部署的时候,缓存中是没有数据的,可以写个接口,在程序启动的时候把数据放入缓存)
  • 使用锁,排队请求
  • 给每一个缓存数据增加相应的缓存标记,记录缓存是否失效,如果缓存失效则更新(不推荐,耗费性能)
  • 定时更新缓存(不推荐,耗费性能)
  1. 缓存穿透

概念

  • 指缓存和数据库中都没有请求的数据,所以每次请求也直接访问数据库,导致数据库短时间内压力过大而崩溃(缓存无数据,数据库也无数据)

解决方案

  • 使用布隆过滤器,拦截不存在的 key
  • 记录请求的 key,将 null 值存入缓存(针对暴力请求少数 key 的情况可以使用此方法,但当黑客请求大量的无效 key 时,将会占用大量内存,此时不太推荐)
  • 请求校验(造成缓存穿透的场景之一是黑客攻击,可增加用户校验、参数校验等)
  1. 缓存击穿

概念

  • 和缓存雪崩类似,缓存雪崩是大面积缓存失效,而缓存击穿是某一个热点 key 突然失效,高并发导致数据库短时间内压力过大而崩溃(缓存中无某条数据,数据库中有此数据)

解决方案

  • 设置热点 kye 不过期
  • 使用锁,排队请求
http://www.lryc.cn/news/62019.html

相关文章:

  • VBA实战篇学习笔记02 Err错误处理
  • 【Git】拉取代码/提交代码
  • 产品预览 | 系统仿真与三维专业场仿真融合——MWORKS模型降阶工具箱
  • 我们都遇到过的这些ajax代码到底什么意思?
  • TiDB实战篇-TiCDC
  • ElasticSearch第十七讲 ES索引别名的使用
  • 第二个机器学习应用:乳腺癌数据集在决策树模型上的挖掘
  • 前端canvas截图酷游地址的方法!
  • 2018年入学,2021年入职
  • python+nodejs+ssm+vue 基于协同过滤的旅游推荐系统
  • 【STL十四】函数对象(function object)_仿函数(functor)——lambda表达式
  • 如何写出高质量的前端代码
  • YOLOv7如何提高目标检测的速度和精度,基于优化算法提高目标检测速度
  • CentOS 7中安装配置Nginx的教程指南
  • Vicuna- 一个类 ChatGPT开源 模型
  • 5.1 数值微分
  • 云计算服务安全评估办法
  • laravel5.6.* + vue2 创建后台
  • Python自动化sql注入:布尔盲注
  • Microsoft Defender for Office 365部署方案
  • 字节岗位薪酬体系曝光,看完感叹:不服真不行
  • 华为OD机试-高性能AI处理器-2022Q4 A卷-Py/Java/JS
  • Vue - 实现垂直菜单分类栏目,鼠标移入后右侧出现悬浮二级菜单容器效果(完整示例源码,详细代码注释,一键复制开箱即用)
  • NVM-无缝切换Node版本
  • CCF-CSP真题《202303-1 田地丈量》思路+python,c++满分题解
  • Autosar-软件架构
  • 8年测开年薪30W,为什么从开发转型为测试?谈谈这些年的心路历程……
  • 滑动奇异频谱分析:数据驱动的非平稳信号分解工具(Matlab代码实现)
  • updateByPrimaryKey和updateByPrimaryKeySelective的区别
  • 【ARM Coresight 4 - Rom Table 介紹】