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

Redis 缓存雪崩、缓存穿透、缓存击穿

Redis 是一种常用的内存缓存工具,但在某些情况下,它可能会遭受缓存雪崩、缓存穿透和缓存击穿等问题。下面是一些预防这些问题的建议:

1、缓存雪崩

缓存雪崩指的是在某个时间点上,大量的缓存数据同时失效或过期,导致大量请求落到后端数据库上,引起系统崩溃。预防措施如下:

  • 逐级设置过期时间,避免所有缓存同时失效。

  • 设置随机过期时间,避免同时失效。

  • 引入限流和熔断机制,避免并发请求过多。

2、缓存穿透

缓存穿透指的是缓存中没有但数据库中有的数据,每次请求都会穿透缓存,直接请求数据库。攻击者可利用此漏洞进行攻击。预防措施如下:

  • 空值缓存:将查询结果为空的键也存储到缓存中,避免重复查询数据库。

  • 对于不存在的数据,也要缓存,设置一个较短的过期时间,减轻数据库压力。

  • 对于非法的请求参数,提前过滤掉,避免浪费资源。

  • 布隆过滤器:BloomFilter等布隆过滤器工具对请求进行过滤,判断请求的key是否合法,提前阻止非法请求。

3、缓存击穿

缓存击穿指的是某个热点key在缓存失效的短时间内,有大量的请求落到数据库上,引起数据库压力过大。预防措施如下:

  • 通过加锁,只允许一个请求查询数据库,其他请求等待查询结果。互斥锁,在缓存失效时,使用互斥锁来避免多个请求同时访问数据库。

  • 对于热点数据,设置永不过期,避免在高并发情况下,同时失效。

http://www.lryc.cn/news/171486.html

相关文章:

  • Android Media3 ExoPlayer 开启缓存功能
  • MyBatis注解开发
  • C# Onnx Yolov8 Cls 分类
  • Fiddler常用的快键键
  • 【Linux】生产消费模型 + 线程池
  • 基于springboot+vue的爱心助农网站(前后端分离)
  • “华为杯”研究生数学建模竞赛2019年-【华为杯】D题:汽车行驶工况构建(附获奖论文和MATLAB代码实现)
  • v-cloak的作用和原理
  • pip pip3安装库时都指向python2的库
  • 和逸云 RK3229 如何进入maskrom强刷模式
  • 防静电离子风扇的应用及优点
  • git中无法使用方向键的问题
  • 负载均衡中间件---Nginx
  • Linux硬链接、软链接
  • React面试题总结(一)
  • 一句话设计模式12:适配器模式
  • iOS加固保护技术:保护你的iOS应用免受恶意篡改
  • 阿里云产品试用系列-云桌面电脑
  • vue3使用vue-virtual-scroller虚拟滚动遇到的问题
  • c#用Gnuplot画图源码
  • 【前端设计模式】之工厂模式
  • Hive 的函数介绍
  • 【Linux基础】第31讲 Linux用户和用户组权限控制命令(三)
  • html form表单高级用法
  • openssl升级
  • 【数据结构】图的遍历:广度优先(BFS),深度优先(DFS)
  • Mysql 学习总结(89)—— Mysql 库表容量统计
  • virtualBox安装配置使用
  • 北斗导航 | RTD、RTK完好性之B值、VPL与HPL计算(附B值计算matlab源代码)
  • more often than not 的含义