什么是布隆过滤器

104 阅读1分钟

布隆过滤器,是用于快速判断某个数据是否存在。正好应用在redis层外面做一个保护,防止缓存穿透。

什么是缓存穿透呢?

就是一直查询不存在的数据,我们都知道,reids上查不到数据的话,就会往mysql上面去查数据,但是mysql也没有的话,就会导致一直在查。

这样就会给数据库很大的压力,可能导致数据库崩溃。

首先,说一下他的数据结构。

他是一个初始值为0的bit数组和多个hash函数组成。

正是因为他用了多个hash函数,所以他的特性就是,如果判断元素不存在,那么肯定不存在,如果判断存在,不一定存在,因为hash冲突。

因为他用了多个hash函数,也就时说,他映射一个数据,就会导致多个槽位从0置位1,如果有hash冲突,你不知道这个槽位是自己的还是别人的,所以就可能存在也可能不存在。

所以,他只能添加,不能删除。

最后,总结一下他的优缺点。

优点:可以快速高效的进行查询数据。 缺点:不能删除,存在误判。