一 :什么是布隆過濾器?
(Bloom Filter)是由布隆(Burton Howard Bloom)在1970年提出的。它實際上是由一個很長的二進制向量和一系列隨機映射函數組成,布隆過濾器可以用於檢索一個元素是否在一個集合中。
二:使用布隆過濾器的 優勢 和 缺點?
優點:
它的優點是空間效率和查詢時間都遠遠超過一般的算法。
這是個非常神奇的數據結構,僅需極少的空間就可以判斷一個元素是不是在一個集合之內,判斷key是否存在。
缺點:
有一定的誤識別率(假正例False positives,即Bloom Filter報告某一元素存在於某集合中,但是實際上該元素並不在集合中)和刪除困難,
但是沒有識別錯誤的情形(即假反例False negatives,如果某個元素確實沒有在該集合中,那么Bloom Filter 是不會報告該元素存在於集合中的,所以不會漏報)。
三:布隆過濾器適用的場景?
我們可以把所有的用戶ID建立一個布隆過濾器,這樣當那些黑客的請求過來以后,先用這個過濾器攔截一下,
如果黑客要訪問的用戶ID不在這個過濾器中,我們就直接把他過濾出去。”
金無足赤,人無完人,Bloom Filter也會有誤報,即使某個用戶ID不在集合中,他也可能報告說在集合中。
這個時候Tomcat就認為這是一個合法的用戶ID,就去Redis中查,不存在,然后到我這里查,還是不存在。”