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

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

文章目录

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


一、原理

正常情况:Redis缓存流程

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

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

在这里插入图片描述

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

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


二、解决方案

方案一:缓存空数据

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

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

方案二:布隆过滤器

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

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

相关文章:

  • 操作系统核心名词解释--期末简答题快速复习
  • 【深度解析】Java高级并发模式与实践:从ThreadLocal到无锁编程,全面避坑指南!
  • Python 训练营打卡 Day 46-通道注意力
  • 电影院管理系统的设计与实现
  • VINS-Fusion 简介、安装、编译、数据集/相机实测
  • Linux系统编程 | IPC对象---共享内存
  • 算法的几大模块
  • HTML 从入门到起飞 · 系列合集:一站式学习不掉线
  • htmlcss考核
  • 6.11小测(html、css)
  • [深度学习]目标检测基础
  • RADIUS服务器的核心应用场景与ASP认证服务器的快速对接指南
  • MIT线性代数第二讲笔记
  • docker(学习笔记第一课) 使用nginx +https + wordpress
  • 视觉通才模型:最新综述 [ 2025 IJCV ]
  • AI for 数据分析:技术演进与应用实践
  • Flink CDC MySQL 表字段定义为 decimal 输出乱码问题优雅解决方式
  • logback常用配置
  • aws(学习笔记第四十四课) opensearch
  • ShardingSphere 全面学习路径
  • 理解 package.json 中的版本控制:“nuxt“: “3.16.0“ vs “nuxt“: “^3.16.0“ 的深层差异
  • 青少年编程与数学 01-011 系统软件简介 21 杀毒软件及安全软件
  • Android 多 BaseUrl 动态切换策略(结合 ServiceManager 实现)
  • 【数据结构中哈希函数与哈希表】
  • Leetcode 刷题记录 14 —— 回溯
  • 《拖延心理学》:深度剖析与应对指南​
  • Java对象中的MarkWord
  • 解决电脑第一排按键功能失效的问题
  • 【Redis】分布式锁
  • 手动 + 自动双方案组合:Innocise 壁虎吸盘灵活适配多场景无损搬运需求