Redis5 BloomFilter 安装及使用

Redis-布隆过滤器(Bloom Filter)详解 什么是布隆过滤器 布隆过滤器(Bloom Filter)是 1970 年由布隆提出的,是一种非常节省空间的概率数据结构,运行速度快,占用内存小,但是有一定的误判率且无法删除元素。它实际上是一个很长的二进制向量和一系列随机映射函数组成,主要用于判断一个元素是否在一个集合中。 通常我们都会遇到判断一个元素是否在某个集合中的业务场景,这个时候我们可能都是采用 HashMap的Put方法或者其他集合将数据保存起来,然后进行比较确定,但是如果元素很多的情况下,采用这种方式就会非常浪费空间,最终达到瓶颈,检索速度也会越 阅读详情

Redis5中BloomFilter和Redisson 安装及使用

安装及使用布隆过滤器

  1. Centos7 上 Redis 5.x 安装及使用布隆过滤器(BloomFilter )
1. 进入redis安装目录: cd /usr/local/redis-5.0.8
2. 下载插件: git clone https://github.com/RedisBloom/RedisBloom.git  
	# https://github.com/RedisBloom/RedisBloom
3. 进入插件目录: cd redisbloom/  (重命名之前为RedisBloom)
4. 执行: make
5. 修改 redis.conf,增加配置: loadmodule /usr/local/redis-5.0.8/redisbloom/redisbloom.so
6. 启动redis:  src/redis-server ./redis.conf
7. 连接客户端: src/redis-cli -p 6379 
8. 测试,先后执行: bf.add users francis     bf.exists users francis  
9. 更多内容可参考: https://oss.redislabs.com/redisbloom/

  1. Java 操作结合Redisson操作布隆过滤器

    <dependency>
        <groupId>org.redisson</groupId>
        <artifactId>redisson-spring-boot-starter</artifactId>
        <version>3.12.1</version>
    </dependency>
    
    
    RBloomFilter<String> bloomFilter = redisson.getBloomFilter("phoneList");
    //初始化布隆过滤器:预计元素为100000000L,误差率为3%(默认为3%,设置越小占用内存越大)
    bloomFilter.tryInit(100000000L,0.03);
    //将号码10086插入到布隆过滤器中
    bloomFilter.add("10086");
    
    //判断下面号码是否在布隆过滤器中
    System.out.println(bloomFilter.contains("123456"));//false
    System.out.println(bloomFilter.contains("10086"));//true
    

springboot配置redisson

1.sentinel高可用下配置

@Configuration
public class RedissonConfig {

    @Value("${spring.redis.sentinel.master}")
    private  String master;
    @Value("${spring.redis.sentinel.nodes}")
    private  String cluster;
    @Value("${spring.redis.password}")
    private String password;
    @Value("${spring.redis.timeout}")
    private Integer timeout;

    //添加redisson的bean
    @Bean
    public Redisson redisson() {
        String[] nodes = cluster.split(",");

        List<String> clusterNodes = new ArrayList<>();
        for (int i = 0; i < nodes.length; i++) {
            clusterNodes.add("redis://" + nodes[i]);
        }
        Config config = new Config();

        SentinelServersConfig serverConfig = config.useSentinelServers()
                .addSentinelAddress(clusterNodes.toArray(new String[0]))
                .setMasterName(master)
                .setReadMode(ReadMode.SLAVE)
                .setTimeout(timeout);

        //设置密码
        if (StringUtils.isNotBlank(password)) {
            serverConfig.setPassword(password);
        }
        return (Redisson) Redisson.create(config);
    }


yml

redis:
    sentinel:
      master: 'mymaster'
      nodes: '10.129.36.24:26379,10.129.36.25:26379,10.129.36.26:26379'
    lettuce:
      pool:
        ###最大连接数
        max-active: 8
        #最大和最小空闲连接
        max-idle: 4
        min-idle: 0
        #连接的最大等待阻塞的时间
        max-wait: 1
        #关闭时的超时时间
        time-between-eviction-runs: 4000
    database: 0
    password: 'K(878ihdkjfiiijfieiyyiyi1'
    timeout: 10000
Redis系列--布隆过滤器(Bloom Filter) 无论使用谷歌版本的布隆过滤器还是自己编写的,都会存在两个问题,1、因为不同元素经过hash函数计算后可能会出现相同的hash值(hash碰撞),就会出现一个误判率的问题2、因为有hash碰撞,导致同一个位置可能存放不同的数据,这对于删除操作是很不友好的。对于这些情况可查看另一种布隆过滤器,布谷鸟过滤器。 阅读详情

相关推荐

BloomFilter(大数据去重)+Redis(持久化)策略

BloomFilter(大数据去重)+Redis(持久化)策略背景之前在重构一套文章爬虫系统时,其中有块逻辑是根据文章标题去重,原先去重的方式是,插入文章之前检查待插入文章的标题是否在ElasticSearch中存在,这无疑加重了ElasticSearch的负担也势必会影响程序的性能!BloomFilter算法 简介:布隆过滤器实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索

只有那些疯狂到认为自己可以改变世界的人,才可以真的改变世界 2万+

布隆过滤器 &布谷鸟过滤器 & Redis 安装布隆过滤器

布隆过滤器 bloom filter;布谷鸟过滤器;

weixin_44244088的博客 1112

【本人秃顶程序员】用Redis快速实现BloomFilter!

←←←←←←←←←←←← 快!点关注 背景 最近工作上有个类似需求是: 现有约3亿条数据词典存在于一个csv文件A中,作为数据源。对于 用户输入的任意单词M,需要快速的在A中匹配M单词是否存在。(A文件约3G大小左右,总行数三亿) 拿到这个需求,你的第一想法怎么做呢? 正常思路可能是: 将csv文件A导入某关系型数据库。 sql查询按M匹配。 上面的方式有个明显的缺点是:慢! 3亿多行的数据,...

本人秃顶程序员的博客 6306

使用 Redis 实现 布隆过滤器 bloom-filter

布隆过滤器的error_rate越小,需要的存储空间就越大,对于不需要过于精确的场景,error_rate设置稍大一点也可以。布隆过滤器的capacity设置的过大,会浪费存储空间,设置的过小,就会影响准确率,所以在使用之前一定要尽可能地精确估计好元素数量,还需要加上一定的冗余空间以避免实际元素可能会意外高出设置值很多。图中的数据意义:(K:hash函数个数;如果不使用bf.reserve命令创建,而是使用Redis自动创建的布隆过滤器,默认的error_rate是 0.01,capacity是 100。

本博客记录了从2014年以来在工作学习中遇到的技术问题、解决方法以及部分个人人生经历、经验等内容。 1185

2020 Redis实战【5】 Module >> Bloom Filter 安装与使用

文章目录关于bloom filter布隆过滤器安装过程关于 Bloom Filter 所使用到的redis命令增加 BF.ADD判断 BF.EXISTS 本文介绍一下redis中实现的 布隆过滤器的安装与使用 关于bloom filter布隆过滤器 具体不细讲了。就是一个粗略过滤器。具体百度有介绍。能看这个的说明你起码了解过滤器或者有需要用到过滤器。 安装过程 redis.io 中访问导航栏中的module 模块中可以看到所有的 redis中的module 找到对应的 RedisBloom 点击r

学海拾遗 749

Android加密开发实战:Spongy Castle集成与国密算法应用指南

在移动应用开发中,数据加密是保障用户隐私和信息安全的基石。其原理基于密码学算法,通过对数据进行编码转换,确保即使数据被截获也无法被未授权方解读。这项技术的核心价值在于为敏感信息提供机密性、完整性和身份验证,广泛应用于用户登录、本地存储、网络通信等场景。对于Android开发者而言,系统自带的加密功能有时无法满足需求,特别是涉及国密算法或更丰富算法套件时。本文聚焦于Spongy Castle这一专为Android定制的加密库,它有效解决了与系统内置Bouncy Castle的兼容性问题,并提供了对SM4等国密

weixin_27722377的博客 309

Redis 布隆(Bloom Filter)过滤器

当你遇到数据量大,又需要去重的时候就可以考虑布隆过滤器,如下场景: 解决Redis 缓存穿透问题(面试重点); 邮件过滤,使用布隆过滤器实现邮件黑名单过滤; 爬虫爬过的网站过滤,爬过的网站不再爬取; 推荐过的新闻不再推荐; 什么是布隆过滤器 布隆过滤器 (Bloom Filter)是由 Burton Howard Bloom 于 1970 年提出,它是一种 space efficient 的概率型数据结构,用于判断一个元素是否在集合中。 当布隆过滤器说,某个数据.

weixin_42073629的博客 2469

MT6826SGT-STD-R绝对值编码器深度解析:精准控制+灵活编程

本文详细介绍MT品牌的高性能绝对值编码器——MT6826SGT-STD-R。:区别于传统增量式编码器,绝对值输出无需掉电归零,开机即获准确位置数据。的核心优势,结合应用场景与选型指南,为工程师提供一站式解决方案参考。MT6826SGT-STD-R是一款专为工业级精密控制设计的。该设备广泛应用于伺服系统、机器人关节校准、自动化产线等领域。:15bit分辨率实现细腻的位置反馈;:通过专用编写器可自定义多项关键参数;:优化电路设计,适应复杂电磁环境。

2501_93066786的博客 679

Centos7 Redis5 BloomFilter 安装及使用

Centos7 上 Redis 5.x 安装及使用布隆过滤器(BloomFilter ) 1. 进入redis安装目录: cd /usr/local/redis-5.0.8 2. 下载插件: git clone https://github.com/RedisBloom/RedisBloom.git (https://github.com/RedisBloom/RedisBloom) 3. 进入插件目录: cd redisbloom/ (重命名之前为RedisBloom) 4. 执行: make 5.

oyc619491800的博客 504

自动驾驶必备:5分钟搞懂gPTP如何实现μs级时间同步(附开源代码)

本文深入解析了gPTP协议在自动驾驶系统中实现微秒级时间同步的核心机制与工程实践。针对多传感器融合与跨域协同的严苛需求,文章拆解了gPTP的频率同步、对等延迟测量与时间偏移校正三步流程,并提供了基于linuxptp和AVnu gPTP两大开源代码库的实战配置指南与性能评估方法,助力开发者构建高精度、高可靠的车载时间同步网络。

weixin_29211309的博客 167

计算机毕业设计springboot基于微信平台的二次元手办商场小程序【附源码】

选题背景: 随着二次元文化的兴起和普及,越来越多的人开始对二次元角色产生了浓厚的兴趣和喜爱。手办作为二次元文化的重要载体之一,成为了许多二次元爱好者收藏和展示的对象。然而,在传统的线下手办商场中,消费者往往面临着时间、空间和选择的限制。因此,基于微信平台的二次元手办商场小程序应运而生。 选题意义: 首先,基于微信平台的二次元手办商场小程序能够打破地域限制,使得用户可以随时随地通过手机进行购物。无论是在家中、上班途中还是旅行中,用户都能够方便地浏览和购买自己喜欢的手办,极大地提高了购物的便利性和灵活性。

拉期程序 452

python+redis实现布隆过滤器(含redis5.0版本以上和5.0以下版本的两份代码)

布隆过滤器是一种空间效率极高的概率数据结构,用于测试一个元素是否是集合的成员。如果布隆过滤器返回False,则元素绝对不在集合中。如果返回True,则元素可能在集合中,但也可能是一个误报。布隆过滤器利用了多个不同的哈希函数对元素进行哈希,并将结果的位置在一个位数组上设置为1。

h1773655323的博客 1784

④ Django创建用户中心应用users,扩展用户信息

本章配套视频教程 Django创建用户中心应用users,扩展用户数据 在settings.py文件中配置项目 1、语言配置:LANGUAGE_CODE = 'zh-hans’ 2、时区配置:TIME_ZONE = 'Asia\Shanghai’ 3、模板路径配置:‘DIRS’: [os.path.join(BASE_DIR, ‘templates’)], 并创建templates文件

轻编程的博客 673

使用BloomFilter优化scrapy-redis去重

使用BloomFilter优化scrapy-redis去重1. 背景 做爬虫的都知道,scrapy是一个非常好用的爬虫框架,但是scrapy吃内存非常的厉害。其中有个很关键的点就在于去重。 “去重”需要考虑三个问题:去重的速度和去重的数据量大小,以及持久化存储来保证爬虫能够续爬。 去重的速度:为了保证较高的去重速度,一般是将去重放到内存中来做的。例如python内置的set( ),redis的se

Kosmoo的博客 1万+

基于YOLOv11的手写数字与符号识别系统设计与实现

手写数字与符号识别系统需要丰富多样的训练数据才能达到理想的泛化性能。MNIST:包含70,000个手写数字样本(0-9),28x28灰度图像优点:干净整齐,适合初学者缺点:多样性不足,只有数字EMNIST:MNIST的扩展,包含数字、字母(大小写)和特殊符号样本量:814,255张图像覆盖62个类别(10数字+26小写字母+26大写字母)HASYv2:专门的手写符号数据集包含369个不同符号类别约168,000个标注实例包括数学符号、箭头、括号等:英文手写文本数据库。

YOLO 291

SAP 系统中的数字签名解决方案及应用案例分析

在当前企业信息化及数字化转型的大背景下,数据安全与身份认证显得尤为重要。数字签名技术作为保障数据真实性和完整性的重要手段,在 SAP 系统中得到了广泛应用。本文将详细探讨 SAP 系统中部分应用场景如何利用数字签名技术满足业务需求,涵盖 SAP Single Sign-On、质量管理、过程工业生产计划以及 SAP ArchiveLink 内容服务器等方面,力求通过深入解读,帮助读者更好地理解和应用这一关键技术。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 527

Redis快速实现BloomFilter

背景 最近工作上有个类似需求是: 现有约3亿条数据词典存在于一个csv文件A中,作为数据源。对于 用户输入的任意单词M,需要快速的在A中匹配M单词是否存在。(A文件约3G大小左右,总行数三亿) 拿到这个需求,你的第一想法怎么做呢? 正常思路可能是: 将csv文件A导入某关系型数据库。 sql查询按M匹配。 上面的方式有个明显的缺点是:慢! 3亿多行的数据,即便是建好索引进行检索,匹配到...

La victoria的博客 8656

边缘AI工业落地:YOLO26-Seg + RK3588 NPU 极致部署(低功耗+实时实例分割,工业场景全覆盖)

本次实战汇总了「YOLO26-Seg+RK3588 NPU」工业边缘部署中最常见、最致命的8个坑点,所有坑点均来自真实工业项目,解决方案均为零代码/一键操作,无需复杂配置,能让你少走90%的弯路,节省大量时间,必看必记!❌ RKNN转换报错「算子不支持/模型加载失败」→ ✅ 导出ONNX时必须指定opset=12,重新导出即可,RK3588唯一兼容版本;❌ 分割mask错位/轮廓模糊 → ✅ 导出ONNX时加,并保证RKNN的归一化参数与YOLO26一致,零代码修复;

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1718

scrapy--基于Redis的Bloomfilter去重

scrapy–基于Redis的Bloomfilter去重 本文代码去重对象是item class RedisPipeline(object): def __init__(self, redis_uri, redis_db): self.redis_uri = redis_uri self.redis_db = redis_db @classme...

huangwencai123的博客 544

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

基于Redis实现Bloomfilter去重

本文即是用Python,。下面先放代码,最后附上说明。 Python # encoding=utf-8 import redis from hashlib import md5 class SimpleHash(object): def __init__(self, ...

从零开始学习python --zeropython 217

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

scrapy过滤(redis + bloomfilter)

我在pipeline里面添加了如下代码(网上查的) class SimpleHash(object): def __init__(self, cap, seed): self.cap = cap self.seed = seed def hash(self, value): ret = 0 for i in rang...

qq_42832858的博客 5672

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

用Redis快速实现BloomFilter!

转自: https://zhuanlan.zhihu.com/p/55574882 背景 最近工作上有个类似需求是: 现有约3亿条数据词典存在于一个csv文件A中,作为数据源。对于 用户输入的任意单词M,需要快速的在A中匹配M单词是否存在。(A文件约3G大小左右,总行数三亿) 拿到这个需求,你的第一想法怎么做呢? 正常思路可能是: 将csv文件A导入某关系型数据库。 s...

Lisam Blog 657

Redis 中的5种特殊的数据结构 bitmap,hyperLogLog,bloomFilter,GeoHash,Stream

今天给大家带来的是 Redis 中的四种特殊的数据结构 bitmap,hyperLogLog,bloomFilter,GeoHash,Stream 。这四种数据结构其实有点类似于算法层面了,比如 GeoHash 其实就是一个 zset,bitmap 就是 string,只是使用的方法不同导致了更多的功能。 BloomFilter 介绍以及场景使用 BloomFilter 中文名就是 布隆过滤器,作为过滤器,有没有感觉很像 LOL 中布隆的 E技能(坚不可摧) ? 布隆过滤器是一个叫 布隆 的人提出来

进击30K的专栏 1478

华为云云耀云服务器L实例评测|在Redis的Docker容器中安装BloomFilter & 在Spring中使用Redis插件版的布隆过滤器

本篇博客介绍如何在Redis的docker容器中安装BloomFilter,并且结合spring的使用方式。

Arya的博客,专注后端领域 822

基于Redis的Bloomfilter去重(附Python代码)

前言:“去重”是日常工作中会经常用到的一项技能,在爬虫领域更是常用,并且规模一般都比较大。去重需要考虑两个点:去重的数据量、去重速度。为了保持较快的去重速度,一般选择在内存中进行去重。 数据量不大时,可以直接放在内存里面进行去重,例如python可以使用set()进行去重。 当去重数据需要持久化时可以使用redis的set数据结构。 当数据量再大一点时,可以用不同的加密算法先将长字符串压缩成 16/

九茶 2万+
上一篇: window nginx 启动与停止命令等
下一篇: SpringBoot - resource资源文件的打包配置详解(指定资源文件位置)
我是陈胖丁
博客等级 码龄11年 207粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值