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

【1】Redis 缓存穿透原理和解决方案

文章目录

  • 一、原理
      • 正常情况:Redis缓存流程
      • 问题引出:Redis缓存穿透问题
  • 二、解决方案
      • 方案一:缓存空数据
      • 方案二:布隆过滤器


一、原理

正常情况:Redis缓存流程

查询数据时,优先查询Redis:

  • 命中:直接返回查询结果
  • 未命中:查询数据库,返回数据并将数据缓存到Redis中方便下次查询

在这里插入图片描述

问题引出:Redis缓存穿透问题

查询一个不存在的数据时,Redis中也没有,会导致每次查询都会穿过Redis去查询数据库,给予数据库非常大的压力。查询次数过多就会击垮数据库。


二、解决方案

方案一:缓存空数据

返回空数据,并将空数据缓存到Redis中。如:{key:1,value:null}

  • 优点:简单
  • 缺点:
    • 消耗内存 (Redis额外存储开销)
    • 数据不一致 (数据库的数据改变时,可能导致与Redis中的数据不一致)

方案二:布隆过滤器

查询数据时优先查询布隆过滤器,如果存在再去查询Redis和数据库,不存在则直接返回
在这里插入图片描述

  • 优点:
    • 无额外的内存开销
    • 极大的减轻数据库压力
  • 缺点:有一定的误判率
http://www.xdnf.cn/news/14401.html

相关文章:

  • [AAAI Oral] 简单通用的公平分类方法
  • React-router 多类型历史记录栈
  • 《仿盒马》app开发技术分享-- 回收金提现安全锁校验(端云一体)
  • NodeJS中老生代和新生代和垃圾回收机制
  • Arduino入门教程:6、计时与定时
  • 阿帕奇基金会软件授权与公司贡献者许可协议(中英双语版)
  • (笔记)1.web3学习-区块链技术
  • Web3-代币ERC20/ERC721以及合约安全溢出和下溢的研究
  • EXCEL破解VBA密码 ( 仅供学习研究使用)
  • [VSCode] VSCode 设置 python 的编译器
  • 40-Oracle 23 ai Bigfile~Smallfile-Basicfile~Securefile矩阵对比
  • NodeJS里经常用到require,require的模块加载机制是什么
  • lua版的Frpc
  • go.work
  • 车载通信架构 --- IP ECU 在连接被拒绝后的重连机制
  • Spring Cloud Gateway 全面学习指南
  • 论文略读:MLPs Learn In-Context on Regression and Classification Tasks
  • CM工作室发展史 下
  • Python装饰器:优雅增强函数行为的艺术
  • AI+预测3D新模型百十个定位预测+胆码预测+去和尾2025年6月14日第108弹
  • Win10安装DockerDesktop踩坑记
  • Java学习_‘+’作连接符的情况
  • Go语言底层(五): 深入浅出Go语言的ants协程池
  • ASR语音转写技术全景解析:从原理到实战
  • shell三剑客
  • FileBrowser Quantum更丝滑的文件网盘共享FileBrowser的平替
  • Python命名空间与作用域:深入解析名称查找的艺术
  • halcon开发之我与阿莲的故事1
  • Web自动化测试详细流程和步骤
  • Vue框架详解与Element