Java実装ブロンフィルタ
guavaはブロンフィルタを実現しました.直接使用すればいいです.
次に、
com.google.guava
guava
次に、
import com.google.common.hash.BloomFilter;
import com.google.common.hash.Funnels;
import java.util.Objects;
public class Test {
//
private static int size = 1000000;
//
private static double fpp = 0.01;
//
private static BloomFilter bloomFilter = BloomFilter.create(Funnels.integerFunnel(), size, fpp);
public static void main(String[] args) {
//
for (int i = 0; i < 1000000; i++) {
bloomFilter.put(i);
}
double count = 0;
//
for (int i = 1000000; i < 2000000; i++) {
if (bloomFilter.mightContain(i)) {
count++;
}
}
System.out.println(" :" + count/1000000);
}
//
public String getObject(String key) {
String value = redis.get(key);
if (Objects.isNull(value)) {
// redis
if(!bloomFilter.mightContain(key)){
// ,
return null;
}else{
// , , redis
value = db.get(key);
redis.set(key, value);
}
}
return value;
}
}