当前位置: 首页 > 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.lryc.cn/news/601590.html

相关文章:

  • 安卓打包遇到问题
  • 重温经典,小巧方便的 WinXP 来啦!提供离线驱动
  • net8.0一键创建支持(Kafka)
  • 深度学习在自动驾驶车辆车道检测中的应用
  • 命令行和neovim的git操作软件-lazygit
  • GO语言 go get 下载 下来的包存放在哪里
  • MMAP 机制通俗易懂
  • 如何在 Ubuntu 24.04 或 22.04 中更改 SSH 端口
  • Qt C++动态库SDK在Visual Studio 2022使用(C++/C#版本)
  • 图像处理:第二篇 —— 选择镜头的基础知识及对图像处理的影响
  • sealos 方式安装k8s5节点集群
  • K8S 九 安全认证 TLS
  • 记录几个SystemVerilog的语法——时钟块和进程通信
  • 系统集成项目管理工程师【第九章 项目管理概论】 - 价值交付系统
  • C51:使用超声波测量距离
  • [10月考试] C
  • 零基础学习性能测试第五章:求最佳线程数
  • 抖音与B站爬虫实战,获取核心数据
  • Kotlin位运算
  • rust-模块树中引用项的路径
  • Python调用大模型api并部署到前端的主流技术栈以及具体框架对比
  • SecureCRT连接密钥交换失败
  • 问津集 #2:High Compression and Fast Search on Semi-Structured Logs
  • CPA全国青少年编程能力等级测评试卷及答案 Python编程(二级)
  • 第六章 JavaScript 互操(3)JS调用.NET
  • 攻击者可能会试图从bd.tao234窃取您的信息
  • 2024-2025华为ICT大赛中国区 实践赛网络赛道(高教组)全国总决赛 理论部分真题+解析
  • Sklearn 机器学习 数值指标 混淆矩阵confusion matrix
  • RS485转Profinet网关与JRT激光测距传感器在S7-1200 PLC系统中的技术解析与应用
  • 29.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--用户配置服务