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

Redis教程(十六):Redis的缓存穿透、缓存击穿、缓存雪崩

传送门:Redis教程汇总篇,让你从入门到精通

缓存穿透

  • 描述

    用户需要查询一个数据,例如要查一张ASSET_CODE = '999999'的卡片,查询redis中没有,就直接去请求数据库,数据库中也不存在对应的数据,返回空或错误,当很多用户同时请求并且都没有命中!于是都去请求了持久层的数据库,那么这样会给持久层数据库带来非常大的压力。当高并发或有人利用不存在的Key频繁攻击时,数据库的压力骤增,甚至崩溃,这就是缓存穿透问题。

  • 解决方案

    1. 合法请求校验

    2. 缓存空对象

    3. 布隆过滤器

    4. 用户黑名单

缓存击穿

  • 描述

    生产上有一个非常热点的key,在不停的扛着大并发,当这个key失效时,一瞬间大量的请求冲到持久层的数据库中,就像在一堵墙上某个点凿开了一个洞!

  • 解决方案

    1. 设置热点key永不过期

    2. 加互斥锁,同一时间只有一个线程能访问数据库查询这个key,查到了更新到缓存里,剩下的线程可以正常查询Redis缓存

缓存雪崩

  • 描述

    在某一个时间段,Redsi缓存的key大量集中同时过期失效了,所有的请求全部冲到持久层数据库上,导致持久层数据库挂掉!

  • 解决方案

    1. 搭建redis集群

    2. 加互斥锁,同一时间只有一个线程能访问数据库查询这个key,查到了更新到缓存里,剩下的线程可以正常查询Redis缓存

    3. 设置不同的过期时间,让缓存失效的时间点尽量均匀

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

相关文章:

  • 如何实现一个高效的单向链表逆序输出?
  • 使用 Go 实现 HelloWorld 程序,并分析其结构
  • 机器学习:在Python中sklearn库的使用,纯干货!12个小时的整理!
  • XSS 攻击
  • .Net Core 中间件与过滤器
  • 【ARMv7-A】——WFI(wait for interrupt)
  • 92. 反转链表 II
  • Modbus工业网关
  • c++——模板初始识
  • 帆软生成csv文件
  • 12.Redis之补充类型渐进式遍历
  • 品牌做电商控价的原因
  • 安全面试中的一个基础问题:你如何在数据库中存储密码?
  • 【python深度学习】——torch.min()
  • 华为校招机试 - 最久最少使用缓存(20240508)
  • 第三部分:领域驱动设计之分析模式和设计模式应用于模型
  • PID传感器在光电显示行业VOC气体检测的应用
  • iOS推送证书过期处理
  • 蓝海卓越计费管理系统 agent_setstate.php SQL注入漏洞复现
  • 【leetcode2765--最长交替子数组】
  • java文档管理系统的设计与实现源码(springboot+vue+mysql)
  • 西安航空学院电子工程学院领导莅临泰迪智能科技参观交流
  • C++|设计模式(二)|简单工厂和工厂方法模式
  • C语言从头学12——流程控制(一)
  • 10大领域应该怎么记?
  • 通过Ubuntu虚拟机+Linux移植LVGL并通过linux Frame buffer显示
  • M功能-支付平台(三)
  • 5G工厂长啥样
  • 使用Python操作Jenkins
  • 网络协议测试仪设计方案:474-便携式手提万兆网络协议测试仪