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

什么是缓存击穿、缓存穿透、缓存雪崩?

缓存雪崩

缓存雪崩是指缓存同一时间大面积的失效,所以,后面的请求都会落到数据库上,造成数据库短时间内承受大量请求而崩掉。
解决方案

  1. 缓存数据的过期时间设置随机,防止同一时间大量数据过期现象发生。
  2. 一般并发量不是特别多的时候,使用最多的解决方案是加锁排队。
  3. 给每一个缓存数据增加相应的缓存标记,记录缓存的是否失效,如果缓存标记失效,则更新数据缓存。

缓存穿透

缓存穿透是指缓存和数据库中都没有的数据,导致所有的请求都落到数据库上,造成数据库短时间内承受大量请求而崩掉。
解决方案

  1. 接口层增加校验,如用户鉴权校验,id做基础校验,id<=0的直接拦截;
  2. 从缓存取不到的数据,在数据库中也没有取到,这时也可以将key-value对写为key-null,缓存有效时间可以设置短点,如30秒(设置太长会导致正常情况也没法使用)。这样可以防止攻击用户反复用同一个id暴力攻击
  3. 采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的 bitmap 中,一个一定不存在的数据会被这个 bitmap 拦截掉,从而避免了对底层存储系统的查询压力

缓存击穿

缓存击穿是指缓存中没有但数据库中有的数据(一般是缓存时间到期),这时由于并发用户特别多,同时读缓存没读到数据,又同时去数据库去取数据,引起数据库压力瞬间增大,造成过大压力。和缓存雪崩不同的是,缓存击穿指并发查同一条数据,缓存雪崩是不同数据都过期了,很多数据都查不到从而查数据库。
解决方案

  1. 设置热点数据永远不过期。
  2. 加互斥锁,互斥锁
http://www.lryc.cn/news/293648.html

相关文章:

  • springboot153相亲网站
  • CMake生成osg的FFMPEG插件及Windows下不生成VS工程问题解决
  • 代码随想录算法训练营Day25 | 216.组合总和III、17.电话号码的字母组合
  • 故障诊断 | 一文解决,SVM支持向量机的故障诊断(Matlab)
  • 12.1 Web开发_DOMBOM:JS关联CSS(❤❤)
  • scoped样式隔离原理
  • 降价不是杀手锏,和府捞面打起“养生牌”
  • 在WORD中设置公式居中编号右对齐设置方式
  • 如何使用 Supabase Auth 在您的应用程序中设置身份验证
  • 带libc源码gdb动态调试(导入glibc库使得可执行文件动态调试时可看见调用库函数源码)
  • 初级通信工程师-通信动力与环境
  • clickhouse在MES中的应用-跟踪扫描
  • 适用于嵌入式单片机的压缩算法
  • 软件工程(最简式总结)
  • Docker基础(持续更新中)
  • Vue工程引入Element-ui
  • 算法学习——华为机考题库9(HJ56 - HJ63)
  • Maven安装,学习笔记,详细整理maven的一些配置
  • STM32--USART串口(2)串口外设
  • Unity之做一个最简单的FPS游戏demo
  • 【Springboot】单元测试Junit5应用
  • 【INTEL(ALTERA)】内部错误:子系统:PTI,文件:/quartus/tsm/pti/pti_delay_annotator.cpp
  • 大数据 - Spark系列《二》- 关于Spark在Idea中的一些常用配置
  • android 设置未知来源等 AppOpsManager 权限的设置接口
  • 使用GPT实现一个简单的网站
  • 回归预测 | Matlab实现CPO-CNN-LSTM-Attention冠豪猪优化卷积长短期记忆神经网络注意力机制多变量回归预测(SE注意力机制)
  • 11:Servlet中初始化参数的获取与应用-Java Web
  • STM32的ADC采集传感器的模拟量数据
  • opencvb 十七 使用cmake配置opencv c++项目
  • Java8 中文指南(一)