@SpringBootTest
public class BloomFilterTest {
@Resource
private RedissonClient redissonClient;
@Test
public void testBloom() {
RBloomFilter<Object> myBloomFilter = redissonClient.getBloomFilter("myBloomFilter");
// 初始化布隆过滤器,设置预计插入的元素数量和误差率
myBloomFilter.tryInit(1000000, 0.01);
// 添加元素到布隆过滤器
myBloomFilter.add("item1");
myBloomFilter.add("item2");
// 检查元素是否存在于布隆过滤器
System.out.println(myBloomFilter.contains("item1")); // 输出 true
System.out.println(myBloomFilter.contains("item3")); // 输出 false
// 关闭 Redisson 客户端连接
redissonClient.shutdown();
}
}
bitmap数组长度是根据 boolean tryInit(long expectedInsertions, double falseProbability);这里面的两个参数计算得到的
公式 m = -((n * log§) / (log(2)^2)) ,其中,m 是位图数组的长度(也就是所需的位数),n 是预期插入的元素数量,p 是期望的误差率。