广告
返回顶部
首页 > 资讯 > 数据库 >redis的set get[布隆过滤器]
  • 645
分享到

redis的set get[布隆过滤器]

redis的setget[布隆过滤器] 2018-08-21 09:08:30 645人浏览 绘本
摘要

redis的set get[布隆过滤器]

布隆过滤器是什么

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

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

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

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

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

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

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

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

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

 

布隆过滤器

![全局鸟瞰图](/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大小

 

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

 

怎么用?Maven项目中添加

 <dependency>
            <groupId>com.Google.guavagroupId>
            <artifactId>guavaartifactId>
            <version>23.0version>
 dependency>    

一段我写的测试代码


public class TestBloomFilterByDZZ {

    private static int total = 19999;
    private static BloomFilter 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:过滤垃圾邮件,这是一段计算你可以结合自己的业务了解下。

 

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

您可能感兴趣的文档:

--结束END--

本文标题: redis的set get[布隆过滤器]

本文链接: https://www.lsjlt.com/news/8237.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • redis的set get[布隆过滤器]
    ...
    99+
    2018-08-21
    redis的set get[布隆过滤器]
  • Redis 中布隆过滤器的实现
    Redis 中布隆过滤器的实现?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。什么是『布隆过滤器』布隆过滤器是一个神奇的数据结构,可以用来判断一...
    99+
    2022-10-18
  • Redis怎么安装布隆过滤器
    Redis安装布隆过滤器的方法:打开终端命令行,依次输入以下命令进行安装。wget https://github.com/RedisLabsModules/rebloom/archive/v1.1.1.tar.gz #下载安装包tar zx...
    99+
    2022-10-05
  • Redis如何实现布隆过滤器
    小编给大家分享一下Redis如何实现布隆过滤器,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!布隆过滤器(Bloom Filter...
    99+
    2022-10-18
  • redis如何使用布隆过滤器
    布隆过滤器2个基本指令是bf.add和bf.exists,如果想要一次添加多个,就需要用到bf.madd 指令,同样如果需要一次查询多个元素是否存在,就需要用到bf.mexists 指令,基本使用如下:127.0.0.1:6379>&...
    99+
    2022-10-21
  • Redis中Redisson布隆过滤器的学习
    目录简介使用Demo依赖测试代码简析初始化添加元素检索元素简介 本文基于Spring Boot 2.6.6、redisson 3.16.0简单分析Redisson布隆过滤器的使用。 ...
    99+
    2022-11-13
  • Redis中Bloomfilter布隆过滤器的学习
    目录1.概念2.guava实现2.1.依赖2.2.初始化布隆过滤器2.3.布隆过滤器2.4.添加元素或者判断是否存在3.Redisson实现3.1.依赖3.2.注入或测试1.概念 ​...
    99+
    2022-12-14
    Redis Bloom filter Redis布隆过滤器
  • SpringBoot+Redis如何实现布隆过滤器
    小编给大家分享一下SpringBoot+Redis如何实现布隆过滤器,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!简述关于布隆过滤器的详细介绍,我在这里就不再赘述一遍了我们首先知道:BloomFilter使用长度为m bi...
    99+
    2023-06-29
  • Redis中Bloom filter布隆过滤器的学习
    目录1.概念2.guava实现2.1.依赖2.2.初始化布隆过滤器2.3.布隆过滤器2.4.添加元素或者判断是否存在3.Redisson实现3.1.依赖3.2.注入或测试1.概念 ​ 布隆过滤器是一个高空间利用率的概率性...
    99+
    2022-12-14
    RedisBloomfilter Redis布隆过滤器
  • Redis中的布隆过滤器怎么实现
    这篇文章主要介绍“Redis中的布隆过滤器怎么实现”,在日常操作中,相信很多人在Redis中的布隆过滤器怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Redis中的布...
    99+
    2022-10-19
  • Redis BloomFilter布隆过滤器原理与实现
    目录Bloom Filter 概念Bloom Filter 原理缓存穿透Bloom Filter的缺点常见问题go语言实现Bloom Filter 概念 布隆过滤器(英语:Bloom...
    99+
    2022-11-11
  • Redis 布隆过滤器命令的使用详解
    目录一、Docker 安装 Redis 布隆过滤器学习历史重要原因之一,就是要学会感恩,因为我们都是站在巨人的肩膀上。1.1、安装注意:1.2、测试二、RedisBloom 命令讲解...
    99+
    2022-11-13
  • Redis 布隆过滤器命令的使用详解
    目录一、docker 安装 Redis 布隆过滤器学习历史重要原因之一,就是要学会感恩,因为我们都是站在巨人的肩膀上。1.1、安装注意:1.2、测试二、RedisBloom 命令讲解2.1、命令大纲2.2、BF.ADD ...
    99+
    2022-08-26
  • SpringBoot+Redis实现布隆过滤器的示例代码
    目录简述Redis 安装 Bloom Filter基本指令结合 SpingBoot方式一方式二简述 关于布隆过滤器的详细介绍,我在这里就不再赘述一遍了 我们首先知道:BloomFil...
    99+
    2022-11-13
  • Redis中的布隆过滤器和PHP的使用方法
    Redis是一个开源的内存数据库,被广泛应用于缓存、消息队列、分布式锁等场景。其中,布隆过滤器是一种高效的数据结构,可以用于判断一个元素是否存在于一个集合中,在Redis中得到了广泛的应用。本文将介绍Redis中布隆过滤器的实现原理、使用方...
    99+
    2023-05-16
    PHP redis 布隆过滤器
  • 什么是布隆过滤器
    本篇内容介绍了“什么是布隆过滤器”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在正式讲解布隆过滤器之前,先...
    99+
    2022-10-19
  • Python实现布隆过滤器
    转载自:http://blog.csdn.net/demon24/article/details/8537665 http://blog.csdn.net/u013402746/article/details/28414901      ...
    99+
    2023-01-31
    过滤器 Python
  • Redis中布隆过滤器如何安装和配置
    这篇文章给大家分享的是有关Redis中布隆过滤器如何安装和配置的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、版本要求推荐版本6.x,最低4.x版本,可以通过如下命令查看版本:...
    99+
    2022-10-18
  • Redis处理高并发之布隆过滤器详解
    目录前言缓存穿透、击穿、雪崩缓存穿透出现情况常见的解决方案缓存击穿出现情况解决方案缓存雪崩解决方案布隆过滤器 Bloom filter总结前言 随着我们业务开发越来越来大,并染请求...
    99+
    2022-12-29
    Redis布隆过滤器处理高并发 Redis高并发处理
  • Redis布隆过滤器大小的算法公式是什么
    今天小编给大家分享一下Redis布隆过滤器大小的算法公式是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1. 简介客户端...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作