redis高级篇 springboot+redis+bloomfilter实现过滤案例

一 bloomfilter的作用

1.1 作用

Bloomfilter:默认是有0组成bit数组和hash函数构成的数据结构,用来判断在海量数据中是否存在某个元素。

应用案例:解决缓存穿透。Bloomfilter放在redis前面,如果查询bf中没有则直接返回,如果存在则查询redis,如果redis不存在,则查询mysql数据库。bf拦截一些不必要的请求。

redis高级篇 springboot+redis+bloomfilter实现过滤案例_第1张图片

1.2 案例

1.2.1 流程逻辑

1.构建过程

1)预加载符合条件的记录;2)计算每条记录的hash值;3)计算hash值对应bitmap数组的位置;4)修改值为1;

2.查询过程

1)计算元素的hash位置;2)计算hash值对应二进制数组的位置;3)找到数组中对应位置的值,0代表不存在;1代表存在。

redis高级篇 springboot+redis+bloomfilter实现过滤案例_第2张图片

1.2.2 setbit的构建过程

1.@postConstruct初始化白名单数据

2.计算元素的hash值

3.通过上一步的hash值算出对应的二进制数组的坑位,将对应坑位的值修改为数字;1表示存在。

1.2.3 查询是否存在

1.计算元素的hash值;2通过上一步的hash值计算出对应的二进制数组对应的坑位,返回对应坑位的值,0表示无;1表示存在。

二 工程搭建

2.1 工程结构

redis高级篇 springboot+redis+bloomfilter实现过滤案例_第3张图片

2.2 新增数据

1.controller

redis高级篇 springboot+redis+bloomfilter实现过滤案例_第4张图片

2.service

redis高级篇 springboot+redis+bloomfilter实现过滤案例_第5张图片

 2.3 查询数据

1.controller

redis高级篇 springboot+redis+bloomfilter实现过滤案例_第6张图片

 2.service

redis高级篇 springboot+redis+bloomfilter实现过滤案例_第7张图片

 

 

你可能感兴趣的:(redis,redis,数据库,缓存)