布隆过滤器

1.分布式redis实现布隆过滤器
引入pom文件
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson-spring-boot-starter</artifactId>
<version>3.13.4</version>
</dependency>


public static void main(String[] args) {
Config config = new Config();
config.useSingleServer().setAddress("redis://127.0.0.1:6379");
//构造Redisson
RedissonClient redisson = Redisson.create(config);
RBloomFilter<String> bloomFilter = redisson.getBloomFilter("phoneList");
//初始化布隆过滤器:预计元素为100000000L,误差率为3%
bloomFilter.tryInit(100000000L,0.03);
//将号码10086插入到布隆过滤器中
bloomFilter.add("10086");

//判断下面号码是否在布隆过滤器中
//输出false
System.out.println(bloomFilter.contains("123456"));
//输出true
System.out.println(bloomFilter.contains("10086"));
}
2.普通布隆过滤器
BLOOM_COUNT:预计数据总数
0.01:预计错误率

BloomFilter<String> filter = BloomFilter.create(Funnels.stringFunnel(Charset.defaultCharset()),BLOOM_COUNT,0.01)
主要以下两个方法
放入过滤器里面filter.put("aa");
判断过滤器里面有没有:bloomFilter.mightContain("aa")

posted @ 2021-01-14 17:23  java程序猴  阅读(274)  评论(0编辑  收藏  举报