【redis——缓存穿透】

缓存穿透

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]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值