布隆过滤器原理以及java/redis使用

本文介绍了布隆过滤器的工作原理、优点和缺点,以及在数据去重和缓存穿透场景中的应用。讲解了如何使用Guava库和Redis中的布隆过滤器,并提供了Redis安装及操作命令。
摘要由CSDN通过智能技术生成

布隆过滤器

布隆过滤器是用于判断一个元素是否在集合中。通过一个位数组和N个hash函数实现。(某样东西一定不存在或者可能存在.)

  • 优点:
    • 空间效率高,所占空间小。
    • 查询时间短。
    • 自带去重
  • 缺点:
    • 元素添加到集合中后,不能被删除。
    • 有一定的误判率

布谷鸟过滤器解决了布隆过滤器无法删除的问题

布隆过滤器原理

当一个元素加入布隆过滤器中的时候,会进行如下操作:

  1. 使用布隆过滤器中的哈希函数对元素值进行计算,得到哈希值(有几个哈希函数得到几个哈希值)。
  2. 根据得到的哈希值,在位数组中把对应下标的值置为 1。

当我们需要判断一个元素是否存在于布隆过滤器的时候,会进行如下操作:

  1. 对给定元素再次进行相同的哈希计算;
  2. 得到值之后判断位数组中的每个元素是否都为 1,如果值都为 1,那么说明这个值可能在布隆过滤器中,如果存在一个值不为 1,说明该元素一定不在布隆过滤器中。

使用场景

  • 大量数据中判断某个数据是否存在(用户是否阅读过某个文章):这就可以实现出上述的去重功能,如果你的服务器内存足够大的话,那么使用 HashMap 可能是一个不错的解决方案,理论上时间复杂度可以达到 O(1 的级别,但是当数据量起来之后,还是只能考虑布隆
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值