7.布隆过滤器.md 1.4 KB

基于布隆过滤器解决缓存穿透问题

缓存穿透

产生的背景:

缓存穿透是指使用不存在的key进行大量的高并发查询,导致缓存无法命中,每次请求都要都要穿透到后端数据库查询,使得数据库的压力非常大,甚至导致数据库服务压死;

解决方案:

  1. 接口层实现api限流、用户授权、id检查等;

  2. 从缓存和数据库都取不到数据的话,一样将数据库空值放入缓存中,设置30s有效期避免使用同一个id对数据库攻击压力大;

布隆过滤器基本介绍

布隆过滤器适用于判断某个数据是否在集合中存在,不一定百分百准备, Bloom Filter基本实现原理采用位数组与联合函数一起实现;

什么是布隆过滤器呢?

HashMap? 检测该key是否存在 原理:先计算对应的key存放到数组的

Index? O(1)

就是使用hashmap存放redis的key

布隆过滤器 作用:

布隆过滤器适用于判断一个元素在集合中是否存在,但是可能会存在误判的问题。

实现的原理采用二进制向量数组和随机映射hash函数。

布隆过滤器为什么会产生冲突 ,会根据key计算hash值,可能与布隆过滤器中存放的元素hash产生冲突都是为1,布隆可能会产生误判可能存在。

如何解决这个问题:二进制数组长度设置比较大,可以减少布隆误判的概率。