当前位置:   article > 正文

Golang基于Redis bitmap实现布隆过滤器(完结版)

Golang基于Redis bitmap实现布隆过滤器(完结版)

Golang基于Redis bitmap实现布隆过滤器(完结版)

为了防止黑客恶意刷接口(请求压根不存在的数据),目前通常有以下几种做法:

  1. 限制IP(限流)
  2. Redis缓存不存在的key
  3. 布隆过滤器挡在Redis前

完整代码地址:

https://github.com/ziyifast/ziyifast-code_instruction/tree/main/blond_filter

1 概念:

1.1 本质:超大bit数组

  • 原理:由一个初始值都为0的bit数组和多个hash函数构成(相当于多把锁才能打开一把钥匙,才能确认某个元素是否真的存在,提高布隆过滤器的准确率),用于快速判断集合中是否存在某个元素
  • 使用3步骤:初始化bitmap -> 添加元素到bitmap(占坑位) -> 判断是否存在
    -Hash冲突: 为了避免hash冲突,我们可以通过多个hash函数进行映射,比如:将player:1982分别通过多个hash函数映射到多个offset。在查询时,就需要判断是否映射的所有的offset都存在。(一个hash函数冲突概率可能很高,但是通过不同多个hash进行映射,大幅降低冲突概率)

在这里插入图片描述

注意

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/215907
推荐阅读
相关标签