布隆过滤器学习笔记(解决redis缓存穿透)
1、添加配置信息
@Configuration @EnableCaching //开启注解 public class RedisConfig extends CachingConfigurerSupport { @Value("${spring.redis.host}") private String address; @Value("${spring.redis.password}") private String password; @Value("${spring.redis.port}") private String host; @Bean public Config redissionConfig() { Config config=new Config(); SingleServerConfig singleServerConfig=config.useSingleServer(); singleServerConfig.setAddress("redis://"+address+":"+host); singleServerConfig.setPassword(password); return config; } //布隆过滤器 @Bean public RedissonClient redissonClient() { return Redisson.create(redissionConfig()); } }
2、测试代码
@PutMapping("test") public String test(){ RedissonClient client= redissonClientUtil.getRedissonClientUtil(); RBloomFilter<String>bloomFilter= client.getBloomFilter("test5-bloom-filter"); // 初始化布隆过滤器,数组长度100W,误判率 1% bloomFilter.tryInit(1000000L, 0.01); bloomFilter.expire(1, TimeUnit.MINUTES);//设置过期时间 // 添加数据 bloomFilter.add("ID1"); bloomFilter.add("ID3"); // 判断是否存在 String result= bloomFilter.contains("ID3")+","+bloomFilter.contains("ID1"); return result; }
www.baidu.com