redistemplate 布隆过滤器_布隆过滤器的误判率是多少

redistemplate 布隆过滤器_布隆过滤器的误判率是多少布隆过滤器是什么 在做JAVA项目时候用到这个(参考地址),今天咱们就讲一讲 名字就跟每个定律一样,你问为什么叫牛顿定律,因为是牛顿发明或者发现的。 他能做什么?它是将一个二进制向量和函数映射,布隆…

redis的set get[布隆过滤器]

布隆过滤器是什么

在做JAVA项目时候用到这个(参考地址),今天咱们就讲一讲

名字就跟每个定律一样,你问为什么叫牛顿定律,因为是牛顿发明或者发现的。

他能做什么?它是将一个二进制向量和函数映射,布隆过滤器可以用在检测元素是否存在某个集合或者用于快速检索中。

缺点: 有一定的删除问题和错误识别率

优点:查询时间和空间都远远超过普通算法

布隆过滤器Bloom Filter 是怎么实现的

添加Item或者元素时,创建一个散列函数和一个KEY形成映射,设置的数据=1,只要检索时判断 =1就知道这个数据存不存在,有了此方法,查询时发现有0的则证明一定不存在,那么反过来讲如果是1证明元素很可能存在,

注意这里为什么说很可能存在,因为他有一定的识别错误,但这个错误在实际生产过程中可以忽略,毕竟利大于弊么。

看文字晕晕乎乎,不动就画图,来看看应该就会明白许多。

 
redistemplate 布隆过滤器_布隆过滤器的误判率是多少

布隆过滤器

![全局鸟瞰图](/Users/stivepeim/Library/Application Support/typora-user-images/image-20210413105737673.png)

说人话

布隆过滤器到底能干啥?

特殊的id暂且不提哈,数据库id基本都是自增的对吧!我们传递id后端去DB查询,这个非常合理。

但是如果我们用负数查询呢?一两条无所谓,如果成千上万呢?基本上数据库都会很大压力扛不住,服务器配置暂且不说,拖慢系统运行速度甚至宕机都是有可能的,这样是不是布隆过滤器的有点有展现的淋漓尽致。【狗头】

这么吊,也是有代价的,因为它也拿不准,存在一定程度的判断失误!

问:为什么会误判?

答:搜索的key没在容器中,但是hash后得到的key都是1 。假如布隆过滤器中有黑名单,那么直接创建一个白名单就搞定了。

问:为什么不容易删除?

答:我们提到正确的数据Key值=1,但不能因为=0就删掉他,这可能会影响其他元素的判断 不过可以了解下Counting Bloom Filter 「下一篇文章」

说了这么多咋实现

1:预估数量n以及期望的误判率FPP

2:  hash函数和bit集合的size大小

Bit集合Size大小

 
redistemplate 布隆过滤器_布隆过滤器的误判率是多少

函数 哈希选择,预估值n和bit数组长度m获取hash函数Key

 
redistemplate 布隆过滤器_布隆过滤器的误判率是多少

怎么用?maven项目中添加

 <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>23.0</version>
 </dependency>    

一段我写的测试代码

/**
 * 布隆过滤器 – 用于redis缓存穿透 的情况
 */

public class TestBloomFilterByDZZ {

    private static int total = 19999;
    private static BloomFilter<Integer> bfilter = BloomFilter.create(Funnels.integerFunnel(), total);

  // 初始化数据
    public static void main(String[] args) {
        for (int i = 0; i < total; i++) {
            bfilter.put(i);
        }

        // 是否有匹配不上的
        for (int i = 0; i < total; i++) {
            if (!bfilter.mightContain(i)) {
                System.out.println;
            }
        }

        // 不再内的有多少匹配出来
        int count = 0;
        for (int i = total; i < total + 10000; i++) {
            if (bfilter.mightContain(i)) {
                count++;
            }
        }
        System.out.println(“炮灰陪跑:” + count);
    }

}

可适用的业务场景

1:当一个入库数据量比较大的时候,可以用作名称或者唯一件做检查,存在则跳过不存在则入库

2:过滤垃圾邮件,这是一段计算你可以结合自己的业务了解下。

 
redistemplate 布隆过滤器_布隆过滤器的误判率是多少

日常求关注,希望在被业务折磨的情况下还能留下点什么。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/6358.html

(0)
上一篇 2023-04-12
下一篇 2023-04-12

相关推荐

  • python怎么读取表格中的一个数据_表格数据有效性设置

    python怎么读取表格中的一个数据_表格数据有效性设置Python 是最流行、功能最强大的编程语言之一。由于它是自由开源的,因此每个人都可以使用。大多数 Fedora 系统都已安装了该语言。Python 可用于多种任务,其中包括处理逗号分隔值(CSV)…

    2023-02-26
    157
  • Mysql复制方式(半同步复制,并行复制,多源复制

    Mysql复制方式(半同步复制,并行复制,多源复制一、MySQL主从复制(异步复制,默认) Mysql主从复制原理 Mysql的复制原理大致如下: 1.主库记录binlog日志 在每次准备提交事务完成数据更新前,主库将数据更新的事件记录到二进制日志…

    2023-02-21
    143
  • Python导入包的多种方法

    Python导入包的多种方法
        Python是一种高级的、可扩展的、通用的脚本语言,广泛应用于人工智能、大数据、网络爬虫等多个领域,成为了日益热门的编程语言。Python的模块化和包管理的思想,让Python代码更加模块化和易于维护。在Python中,我们可以通过多种方式来导入包,满足不同的开发需求。在本文中,我们将详细介绍Python导入包的多种方法,以及它们的使用场景。

    2024-06-04
    62
  • 以Python设置全局变量为中心

    以Python设置全局变量为中心在程序设计中,变量是存储数据的基本单位。在不同的变量作用域中,其声明周期和可见性是不同的。局部变量只能在其声明所在的代码块中使用,而全局变量可以在代码的任何地方被访问和修改。在Python中,定义全局变量相对来说比较简单,但考虑到程序的可维护性和优雅性,我们需要注意一些细节。

    2024-07-28
    31
  • GDB 命令速查[亲测有效]

    GDB 命令速查[亲测有效] 1. gdb file_name 调试file_name 2. n 跳到下一条源码语句,遇到函数不进入 3. s 跳到下一条源码语句,遇到函数进入 4. ni 跳到下一条汇编语句,遇到函数不…

    2023-03-25
    147
  • Python中的regexp_instr函数用法介绍

    Python中的regexp_instr函数用法介绍在编程领域中,处理或者查找字符串已经成为了日常工作的一部分,而正则表达式是处理字符串的最好工具之一。Python作为一个优秀的编程语言,自然也不例外。regexp_instr函数则是Python中正则表达式匹配工具之一。

    2024-08-12
    25
  • 表关联使用INNER JOIN实现更新功能[亲测有效]

    表关联使用INNER JOIN实现更新功能[亲测有效]准备一些数据,创建2张表,表1为学生表: CREATE TABLE [dbo].[Student] ( [SNO] INT NOT NULL PRIMARY KEY, [Name] NVARCHAR(

    2023-01-30
    164
  • hive 存储的文件格式_怎么存储为web格式

    hive 存储的文件格式_怎么存储为web格式hive 存储格式有很多,但常用的一般是 TextFile、ORC、Parquet 格式,在我们单位最多的也是这三种 hive 默认的文件存储格式是 TextFile。 除 TextFile 外的其他

    2023-05-18
    140

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注