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

【redis——缓存穿透】

redis——缓存穿透

  • 缓存穿透
  • 缓存穿透的解决方案
    • 缓存空对象(Null Object)
    • 布隆过滤器(Bloom Filter)
      • 布隆过滤器的核心原理

缓存穿透

Redis缓存穿透是指

  • 查询一个根本不存在的数据,即客户端请求的数据​​既不在缓存中,也不在数据库中​​
  • 导致请求绕过缓存层直接访问数据库的现象。即每次请求都会直接打到数据库,从而绕过缓存保护机制。
  • 这种现象在高并发场景下会对数据库造成巨大压力,甚至可能导致数据库崩溃。

缓存穿透的解决方案

缓存空对象(Null Object)

当数据库查询为空时,仍然将空结果(如"NULL"或空对象)缓存起来,并设置较短的过期时间。

优点​​
实现简单直接
能有效防止重复穿透

​​缺点​​
可能缓存大量无效key,占用内存空间
可能发生数据不一致的问题

布隆过滤器(Bloom Filter)

布隆过滤器(Bloom Filter)是一种空间效率极高的概率型数据结构,由Burton Howard Bloom于1970年提出,用于快速判断一个元素是否可能存在于集合中。

布隆过滤器的核心原理

布隆过滤器的核心思想是​​通过多个哈希函数和一个位数组来表示集合元素的存在性​​,具有以下显著特点:

​​空间效率极高​​:仅需存储二进制位,无需保存元素本身
​​概率型判断​​:可能存在误判(False Positive),但绝不会漏判(False Negative)
​​查询速度快​​:时间复杂度为O(k),k为哈希函数数量
​​不支持删除​​:标准布隆过滤器不支持删除操作

误判机制
占用位: 2,5,8
已添加: apple
未添加: orange
检测位: 2,5,8
冲突导致误判
查询元素
计算哈希值
查询元素
h₁(e)→2
h₂(e)→5
h₃(e)→8
读取位标志
所有位=1?
返回: 可能存在
(可能误判)
返回: 肯定不存在
添加元素
计算哈希值
输入元素
h₁(e)→2
h₂(e)→5
h₃(e)→8
设置位标志
位数组状态:
[0,0,1,0,0,1,0,0,1,0]
http://www.xdnf.cn/news/13933.html

相关文章:

  • 基于PSO粒子群优化的VMD-LSTM时间序列预测算法matlab仿真
  • git 下载安装并连接gitee
  • 一键给你的网页增加 ios26 液态玻璃效果
  • Android 手机如何实现本地视频音频提取?实战教程来了
  • 提示词Prompts(2)
  • 提示词Prompts(1)
  • iOS-SM3加密算法N种集成
  • MySql基础教程:事务基础知识
  • 通信安全员A,B,C证有什么区别?
  • 一文讲清网络变压器、芯片和 RJ45 之间的接线
  • WebView工作原理全解析:如何实现混合开发的无缝衔接
  • python transformers库笔记(BertTokenizerFast类)
  • 高频面试之12 HBase
  • javascript中浏览器自带的实用方法
  • 液氮罐里的重要样本老是担心安全受到损坏如何操作可以在线记录开门时间呢?
  • 使用GpuGeek训练图像分类器:从入门到精通
  • ubuntu24.04.2安装docker自动化脚本
  • React Native 性能优化实践
  • 【Linux网络编程】基于udp套接字实现的网络通信
  • 2024年06月青少年软件编程(图形化)等级考试试卷(四级)
  • 一名高级运维工程师,一台新服务器,安装windows系统后,在网络攻防(护网行动)形式下,应该怎么做安全加固?
  • Arduino入门教程:​​​​​​​2、代码基础
  • 在 cuda 基础环境中安装完整的cupy
  • Spring AI Chat Memory 指南
  • Prompt从入门到抄作业
  • 联邦算法分析:技术深度探索与实践应用
  • Linux系统权限提升篇Vulnhub辅助项目SUID权限SUDO指令版本漏洞
  • React ajax中的跨域以及代理服务器
  • python 爬虫,爬取某乎某个用户的全部内容 + 写个阅读 app,慢慢读。
  • OpenCV CUDA模块图像变形------对图像进行GPU加速的仿射变换函数warpAffine()