Redis-布隆过滤器
Redis之布隆过滤器
布隆过滤器
布隆过滤器说数据不存在,那么数据库中一定不会有这个数据。如果说数据存在,并不一定证明数据库中存在这个数据,有误判的几率,只不过几率非常小。
布隆过滤器作用
使用布隆过滤器解决Redis缓存穿透问题。(数据在缓存、数据库都不存在,误操作导致或是黑客攻击)
通过布隆过滤器拦截请求,判断请求数据在数据库中是否存在,不存在直接返回错误信息,存在进行缓存。
为什么一定不存在可能存在
组成
- 位图数组(初始值都为0)
- 哈希函数(N个)
布隆过滤器3个操作完成标记
- 用N个哈希函数分别对数据做哈希计算,得到N个哈希值
- 将每个哈希值根据位图数组长度进行取模操作,得到哈希值在位图数据对应位置。
- 哈希值在位图数组位置设置为1.
![image]()
当应用要查询数据 x 是否数据库时,通过布隆过滤器只要查到位图数组的第 1、4、6 位置的值是否全为 1,只要有一个为 0,就认为数据 x 不在数据库中。
参考文章


浙公网安备 33010602011771号