Redis-布隆过滤器-从简介 用法到原理 应用

简介

千万级、亿级数据涉及去重/判断数据是否存在,提高效率时,可使用布隆过滤器
Redis官方提供的布隆过滤器,在Redis 4.0提供插件功能之后才正式登场
布隆说存在,可能不存在,但是布隆说不存在,那就一定不存在

基本用法

bf.add: 添加key
bf.exists: 判断key是否存在

原理

数据结构

两部分组成:大型位数组,几个无偏hash函数

位数组

元素为 0 1 的数组
0代表不存在,1代表存在

无偏hash函数

无偏hash函数:hash值计算的比较均匀,目的是映射到位数组时比较随机
多个无偏hash函数来降低错误率

bf.add原理

  1. key通过hash函数计算获得索引值
  2. 对位数组长度进行取模运算,得到一个位置
  3. 多个hash函数,获得多个位置,并置为1

bf.exists原理

  1. 通过hash计算判断各个位置是否都为1
  2. 一个为0,则为不存在
  3. 都为1也可能不存在(概率可调整)

空间占用估计

在线计算链接:
输入key的预估数量和错误率即可
https://krisives.github.io/bloom-calculator/

应用场景

  1. 抖音推荐,尽量避免推荐用户已经浏览过的内容
  2. 爬虫URL去重
  3. 内存中缓存数据,过滤掉大量不存在数据的请求,降低IO(磁盘查询)
  4. 垃圾邮件拦截
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值