布隆过滤器

布隆过滤器(Bloom Filter)

  • 在Redis中,布隆过滤器由一个大型的位数组和几个不一样的 hash 函数构成。向布隆过滤器中添加 key 时,会使用多个 hash 函数对 key 进行 hash 运算得到一个索引值,然后对位数组长度进行取模运算得到一个位置,每个 hash 函数都会得到一个不同的位置,把位数组中的这几个位置都置为 1,这样就完成了 add 操作。当向布隆过滤器询问 key 是否存在时,跟前面的 add 操作一样,也是通过这些 hash 函数和取模运算,算出在位数组中的位置,并判断是否都为 1,只要有一个为 0,就说明布隆过滤器中的这个 key 不存在;如果都为 1,并不能说明这个 key 就一定存在,只是有很大的可能存在,因为这些位置为 1 可能是因为其他 key 存在导致的。布隆过滤器说某个值不存在,那它就一定不存在;说某个值存在,那它只是可能存在。
  • 使用场景:
    • 系统给用户推荐新闻时,可以使用布隆过滤器过滤掉用户看过的新闻。
    • 用户请求数据库获取数据时,可以先通过内存中布隆过滤器 过滤掉对不存在数据的请求,从而减轻数据库的压力。
    • 在项目中的多级缓存之上,可以添加一个布隆过滤器,防止用户对不存在数据的请求打到数据库上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值