布隆過濾器在Google Guava 18版本以上的jar包有現成的集成,能夠用於緩解緩存穿透數組
由於存在0.03%的誤判率,因此適用於可以容忍必定的緩存穿透的場景~~緩存
其原理是基於:多個哈希函數和二進制向量數據結構 服務器
如圖若果數據通過兩個哈希函數同時命中(二進制數組中爲1的爲命中,如圖 一、b),則爲數據在布隆過濾器中存在~~數據結構
使用步驟:多線程
1:首先把須要緩存過濾的數據load到布隆過濾器之中(數據量過大的話,建議多線程去load)函數
2:部署單獨一臺的布隆過濾器的服務器編碼
3:編碼層在進入緩存或者DB判斷以前,提早使用布隆過濾器判斷是否存在,若是存在:則去緩存或則DB中去取數據;若是不存在,則直接返回(由於布隆過濾器存在必定的誤判率,因此若是布隆過濾器判斷不存在,也有可能會走到緩存或則DB當中去)線程