Redis 高级数据结构业务实践-布隆过滤器 :bloom filter

时间:2024-07-05 15:14:13

4.1、原理

一个大型位数组和几个不同的均匀分布hash函数。用来判断某个数据是否存在

在这里插入图片描述

4.2、布隆过滤器误判率&为什么不建议删除key

因为布隆过滤器的每一个 bit 并不是独占的,很有可能多个元素共享了某一位

查询时,key-1的bit位可能被别的key置为1了

删除时,将key对应bit位置为0,可能导致其他映射到该位置的key也被删除

总结:布隆过滤器可以添加元素,但是不能删除元素。因为删掉元素会导致误判率增加

4.3、案例:手写布隆过滤器防止缓存穿透

过滤器只过滤读操作

过滤器业务流程

在这里插入图片描述

过滤器业务代码

拦截了不存在的用户请求,防止了用户查询相关的缓存穿透

在这里插入图片描述

布隆过滤器实现

在这里插入图片描述