布隆过滤器是一种数据结构,用于快速检索一个元素是否可能存在于一个集合(bit 数组)中。它的基本原理是利用多个哈希函数,将一个元素映射成多个位,然后将这些位设置为 1。当查询一个元素时,如果这些位都被设置为 1,则认为元素可能存在于集合中,否则肯定不存在。 布隆过滤器可以准确的判断一个元素是否一定不存在,但是因为哈希冲突的存在,所以他没办法判断一个元素一定存在。只能判断可能存在。 布隆过滤器里的数据不支持修改,除非重新初始化。
import org.redisson.Redisson;
import org.redisson.api.RBloomFilter;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
public class RedissonBloomFilterUsage {
public static void main(String[] args) {
// 创建 Redisson 配置
Config config = new Config();
// 假设 Redis 运行在本地,端口为 6379
config.useSingleServer().setAddress("redis://127.0.0.1:6379");
// 创建 Redisson 客户端
RedissonClient redisson = Redisson.create(config);
// 获取布隆过滤器实例,指定名称
RBloomFilter<String> bloomFilter = redisson.getBloomFilter("myBloomFilter");
// 初始化布隆过滤器,指定预计插入的元素数量和期望的误判率
bloomFilter.tryInit(10000000L, 0.01);
// 向布隆过滤器中添加元素
String elementToAdd = "exampleElement";
bloomFilter.add(elementToAdd);
// 检查元素是否可能存在于布隆过滤器中
boolean mightExist = bloomFilter.contains(elementToAdd);
System.out.println("元素 " + elementToAdd + " 可能存在于布隆过滤器中: " + mightExist);
String nonExistentElement = "nonExistent";
boolean nonExistentMightExist = bloomFilter.contains(nonExistentElement);
System.out.println("元素 " + nonExistentElement + " 可能存在于布隆过滤器中: " + nonExistentMightExist);
// 关闭 Redisson 客户端
redisson.shutdown();
}
}