布隆過濾器的使用(實戰策略)

2021-10-08 04:17:25 字數 1042 閱讀 8284

前言

布隆過濾器主要的使用用途就是用來判斷乙個元素是否在集合內存在的工具,現在企業業務處理的資料量越來越大,很多時候如果使用list等集合儲存的內容會顯得占用資源過於的龐大。

使用方法

使用布隆過濾器網上有很多實現方法,自己寫起來也很麻煩,還好google提供了相應的包可以直接引用,使用起來十分的方便。

下面直接上乾貨內聯**片

// an highlighted block

private

static int size =

10000000

;//預計要插入資料量

private

static double error =

0.001

;//期望的誤判率

private

static bloomfilter bloomfilter = bloomfilter.

create

(funnels.

integerfunnel()

, size, error)

;

之後在使用時

// an highlighted block

bloomfilter.

put(0)

;//通過這種方式往過濾器裡放入資料

在需要判斷元素的存在與否時

// an highlighted block

bloomfilter.

mightcontain(0

)

這樣就可以得知資料是否存在於過濾器中,如果在業務中,每次往資料庫新增資料時同時也向過濾器裡put乙個值,那麼下次請求的時候就可以通過過濾器的放回判斷資料庫中是否有該值,如果沒有的話那麼就不用查庫直接返回,可以給資料庫減少一定的壓力。

當然這裡是用的funnels.integerfunnel(),所以只能判斷整數,在funnels下面還提供了其他的型別可以使用。比如如果想使用濾器判斷string型別的值時可以使用stringfunnel()即可。

布隆過濾器

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

布隆過濾器

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

布隆過濾器

如果想判斷乙個元素是不是在乙個集合裡,一般想到的是將集合中所有元素儲存起來,然後通過比較確定。鍊錶 樹 雜湊表 又叫雜湊表,hash table 等等資料結構都是這種思路。但是隨著集合中元素的增加,我們需要的儲存空間越來越大。同時檢索速度也越來越慢。bloom filter 是一種空間效率很高的隨機...