布隆过滤器

主要作用:为了防止redis那不争气的玩意儿,出现缓存穿透的问题,同时位运算性能高。

ps:缓存穿透:客户端的查询请求,既不在redis缓存中,也不在数据库里能查询到,高并发过来的时候,Mysql等数据库就玩坏了。

布隆过滤器本质上是一个BIT数组,是一个数据结构,所以可以根据下标快速找数据。

注意:
1、布隆需要记录见过的数据,这里的记录需要通过hash函数对数据进行hash操作,得到数组下标并存储在BIT 数组里记为1。这样的记录一个数据只占用1BIT空间

2、判断是否存在时:给布隆过滤器一个数据,进行hash得到下标,从BIT数组里取数据如果是1 则说明数据存在,如果是0 说明不存在

布隆过滤器判断为【数据存在】 可能数据并不存在,但是如果判断为【数据不存在】那么数据就一定是不存在的。

布隆过滤器只能插入数据判断是否存在,不能删除,而且只能保证【不存在】判断绝对准确。

这里突然明白了一点东西,所以加上:
布隆过滤器缺点:数据量变大的情况下,由于其他数据经过hash运算也可能得到之前数据的结果,所以会存在一定的误判情况。
优点:布隆过滤器在bit数组上只会用1表示存在,0表示不存在,这种二进制的表示方式对内存非常友好,不像hashmap等数据结构,存储对象或者基本类型占用空间大,都是以字节为单位,1byte=8bit。

可以用java模拟实现布隆过滤器的效果,BitSet和Hash函数来实现,具体实现链接https://blog.csdn.net/qq_33709582/article/details/108407706

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值