布隆过滤器:m位数组+K个不偏的哈希函数
一个数,经过K个哈希函数,产生多个值,每个值对数组取模,在bit位置设置1
- 只要一个不为0,则代表不存在
- 都为0,则代表可能存在–误判
依赖:
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>3.13.1</version>
</dependency>
测试类:
public class RedissionBloomFilter {
public static void main(String[] args) {
Config config = new Config();
config.useSingleServer().setAddress("redis://192.168.1.101:6379");
RedissonClient redissonClient = Redisson.create(config);
RBloomFilter<String> cityListBloom = redissonClient.getBloomFilter("cityList");
cityListBloom.tryInit(100000000L, 0.03);
cityListBloom.add("ChangSha");
cityListBloom.add("ShangHai");
cityListBloom.add("ShenZhen");
System.out.println(cityListBloom.contains("Beijing"));
System.out.println(cityListBloom.contains("GuangZhou"));
System.out.println(cityListBloom.contains("ShenZhen"));
redissonClient.shutdown();
}
}
结果:
false
false
true