当前位置: 首页 > news >正文

Redisson的布隆过滤器

布隆过滤器用来判断某个元素是否存在。

使用场景

解决redis缓存穿透,当判断不存在该数据时,直接返回;

垃圾邮箱过滤;

防止内容的重复推荐;

避免爬取相同的URL等等

基本算法

给出一个长度是n的数组,元素的值是0或者1;

向布隆过滤器中添加元素时,根据m个hash函数对元素进行运算,得到m个位置;

将这m个位置的元素设置为1;

判断某个元素是否存在时,也是根据m个hash函数进行运算,如果m个位置的元素都为1,说明元素存在,只要某个位置存在一个0,则说明不存在。

由于hash冲突,布隆过滤器可以判断元素一定不存在,但是不能保证一定存在,其存在一定的误判率。

注:图片来自网络

导入jar

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.18.0</version></dependency>

配置类

package com.qfedu.redissontest.config;import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class RedissonConfig {@Beanpublic RedissonClient getRedisson() {Config config = new Config();config.useSingleServer().setAddress("redis://127.0.0.1:6379").setDatabase(7).setRetryInterval(5000).setTimeout(10000).setConnectTimeout(10000);return Redisson.create(config);}
}

测试

    @Testvoid contextLoads() {RBloomFilter<Long> bloomFilter = redisson.getBloomFilter("sample");// 初始化布隆过滤器,预计统计元素数量为10000,期望误差率为0.01bloomFilter.tryInit(10000L, 0.01);bloomFilter.add(123L);bloomFilter.add(234L);boolean contains = bloomFilter.contains(123L);System.out.println(contains);}

http://www.dtcms.com/a/301091.html

相关文章:

  • MicroPython 开发ESP32应用教程 之 UART 详细讲解及应用
  • 数学建模——灰色关联分析
  • 一个MySQL的数据表最多能够存多少的数据?
  • net8.0一键创建支持(Redis)
  • GPT-4o实战应用指南:从入门到精通的技术心得
  • 【QT开发手册】 Qt界面介绍Qt程序多种实现项目文件解析
  • C语言(长期更新)第6讲:函数
  • 20250727-1-Kubernetes 网络-Ingress介绍,部署Ingres_笔记
  • Java面试精进:测试、监控与序列化技术全解析
  • Product Hunt 每日热榜 | 2025-07-27
  • 【C语言网络编程基础】TCP 服务器详解
  • 《不只是接口:GraphQL与RESTful的本质差异》
  • 机器学习的算法有哪些?
  • python优秀案例:基于python flask实现的小说文本数据分析与挖掘系统,包括K-means聚类算法和LDA主题分析
  • 系统整理Python的条件语句和常用方法
  • [ctfshow web入门]web99 in_array的弱比较漏洞
  • Java面试题及详细答案120道之(081-100)
  • OpenHarmony部件化编译最佳实践
  • 【优选算法】BFS解决FloodFill算法
  • Triton Shared编译
  • 零基础学习性能测试第五章:Tomcat的性能分析与调优-Tomcat原理,核心配置项,性能瓶颈分析,调优
  • JavaScript - 实现套索工具的demo
  • 机器学习鸢尾花案例
  • 面试150 只出现一次的数字Ⅱ
  • 相关数电知识
  • 【51单片机和数码管仿真显示问题共阴共阳代码】2022-9-24
  • Web3与元宇宙:构建下一代互联网的数字文明
  • Petalinux生成文件的关系
  • Flutter 生命周期介绍
  • 2507C++,结构化存储与复合文件