布隆過濾器(BloomFilter)

2021-10-03 02:07:41 字數 730 閱讀 5032

名稱

問題解決方法

快取穿透

查詢了乙個不存在的資料

布隆過濾器

快取擊穿

某個key的快取失效

互斥鎖快取雪崩

多個key的快取同時失效

失效時間+隨機時間

底層是乙個bit二進位制向量或叫 bit 陣列,bit 裡存放的資料非0即1。

通過雜湊函式將元素對映到bit的相應位置,並將此位置置為1。如hash(元素) = 2:

當要查詢某個元素是否存在時,先通過雜湊函式將元素進行對映,得到在bit的位置,再判斷bit的此位置是0或1,若為0,則此元素一定不存在,若為1,則此元素不一定真的存在(是否還記得大明湖畔的經典名句:hash值相等,不一定是同乙個物件;同乙個物件,hash值一定相等)。

確缺點解釋

解決誤判

得到某個元素在bit的位置後,判斷時發現此位置是1,但其實此元素並不存在

單獨儲存可能會誤判的元素

錯刪兩個或以上的元素對映到bit的位置相同,要刪除某個時,將1置為0,導致其他元素也完蛋了

counting bloom filter

spark 布隆過濾器 bloomFilter

資料過濾在很多場景都會應用到,特別是在大資料環境下。在資料量很大的場景實現過濾或者全域性去重,需要儲存的資料量和計算代價是非常龐大的。很多小夥伴第一念頭肯定會想到布隆過濾器,有一定的精度損失,但是儲存效能和計算效能可以達到幾何級別的提公升。很多第三方框架也實現了相應的功能,比如hbase框架實現的布...

布隆過濾器

布隆過濾器 bloom filter 是1970年由布隆提出的。它實際上是乙個很長的二進位制向量和一系列隨機對映函式。布隆過濾器可以用於檢索乙個元素是否在乙個集合中。它的優點是空間效率和查詢時間都遠遠超過一般的演算法,缺點是有一定的誤識別率和刪除困難。如果想要判斷乙個元素是不是在乙個集合裡,一般想到...

布隆過濾器

布隆過濾器的概念 如果想要判斷乙個元素是不是在乙個集合裡,一般想到的是將所有元素儲存起來,然後通過比較確定。鍊錶,樹等等資料結構都是這種思路.但是隨著集合中元素的增加,我們需要的儲存空間越來越大,檢索速度也越來越慢 o n o logn 不過世界上還有一種叫作雜湊表 又叫 雜湊表,hash tabl...