5 分鐘搞懂布隆過濾器,過濾億級數據

在程序的世界中,布隆過濾器是程序員的一把利器,利用它可以快速地解決項目中一些比較棘手的問題。如網頁 URL 去重、垃圾郵件識別、大集合中重複元素的判斷和緩存穿透等問題。

布隆過濾器(Bloom Filter)是 1970 年由布隆提出的。它實際上是一個很長的二進制向量和一系列隨機映射函數。布隆過濾器可以用於檢索一個元素是否在一個集合中。它的優點是空間效率和查詢時間都比一般的算法要好的多,缺點是有一定的誤識別率和刪除困難

一、布隆過濾器簡介

當你往簡單數組或列表中插入新數據時,將不會根據插入項的值來確定該插入項的索引值。這意味著新插入項的索引值與數據值之間沒有直接關係。這樣的話,當你需要在數組或列表中搜索相應值的時候,你必須遍歷已有的集合。若集合中存在大量的數據,就會影響數據查找的效率。

針對這個問題,你可以考慮使用哈希表。利用哈希表你可以通過對 “值” 進行哈希處理來獲得該值對應的鍵或索引值,然後把該值存放到列表中對應的索引位置。這意味著索引值是由插入項的值所確定的,當你需要判斷列表中是否存在該值時,只需要對值進行哈希處理並在相應的索引位置進行搜索即可,這時的搜索速度是非常快的。



分享到:


相關文章: