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

Redis如何解决缓存击穿,缓存雪崩,缓存穿透

        1:缓存击穿

可以把Redis想象成一件防弹衣。MySQL想象成人的身体,当Redis中的一个Key变成了爆款,承担着非常大的并发量,但当这个key突然失效了,就会缓存击穿Redis直接访问MySQL,造成MySQL数据库负荷量太大,影响接口的效率。

        解决方法:

1:设置成永不过期(将一些热点数据提前设置成永不过期,当突然有冷门数据访问量变多怎么办,可以设计一个算法,这个算法用来判断,当请求一个key到一定程度时,就能将这个key设置成永不过期)

2:加一个双重校验锁(同步锁):当有请求想访问接口时,我们首先去redis中缓存寻找是否有需要的数据,如果没有进入我们的校验锁,只允许一次访问,其他请求暂时堵塞,这个请求直接在MySQL中寻找,如果有就存到Redis中,如果没有就抛出一个异常

        2:缓存雪崩

同样这个是击穿了Redis的同时击穿了MySQL,Redis中的缓存集中过期,可能会造成数据库的宕机

        解决方法:

1:设置一个双重校验锁,实现加锁排队

2:在redis中设置随机时间失效,这样就可以避免在短时间内同时失效大量数据

3:Redis的高可用,可以设计几个机房备用

        3:缓存穿透

在Redis的缓存之中没有找到相应的数据,然后在MySQL数据库中也没有,大量的情况下造成数据库宕机

        解决方法:

1:进行一个参数校验,防止用户恶意查找数据

2:缓存空对象,在防止缓存穿透和缓存雪崩的基础上缓存空对象,记得设置过期时间

3:布隆过滤器(了解即可)

http://www.lqws.cn/news/451711.html

相关文章:

  • 技术革新赋能楼宇自控:物联网云计算推动应用前景深度拓展
  • 饼图:数据可视化的“切蛋糕”艺术
  • 搜索二叉数(c++)
  • 【Leetcode】字符串之二进制求和、字符串相乘
  • PCB板高速飞拍检测系统 助力电子制造自动化领域
  • idea中push拒绝,merge,rebase的区别
  • C++ 单例模式一种实现方式
  • Cesium、ThreeWebGL详解(二)渲染引擎向GPU传数据、性能优化、引擎对比
  • 使用 C++/OpenCV 构建中文 OCR 系统:实现账单、发票及 PDF 读取
  • 云计算处理器选哪款?性能与能效的平衡艺术
  • 动态WCMP+Flowlet ALB:双引擎驱动智算网络负载均衡
  • 【Pandas】pandas DataFrame explode
  • shel脚本重启Jar服务
  • 对接世界职业院校技能大赛标准,唯众打造高质量物联网实训室
  • 第二章 SQL编程系列-SQL编程基础
  • 人力资源战略重构,AI驱动高质量发展论坛顺利召开
  • OpenGL和OpenGL ES区别
  • Unity渲染管线 Global Volume 及 Post-processing
  • MACOS系统运行模拟器畅玩SWITCH游戏
  • Windsurf SWE-1模型评析:软件工程的AI革命
  • 用 DeepSeek 打造智能高考志愿填报推荐系统
  • 腾讯混元3D制作简单模型教程-2
  • c++set和pair的使用
  • Vue + AbortController 请求取消弹窗 hook 封装
  • 【Redis】解码Redis字符串:命令执行与内存优化背后的编码逻辑
  • Excel批量计算时间差
  • 邮件合并----批量从excel表中导出数据到word中
  • Linux -- 线程、锁
  • 在spring boot中使用Logback
  • 【Wi-Fi天气时钟】ESP-01S固件烧录与测试