This library provides bloom filter which has high performance and is concurrent safe.
go get -u github.com/liangyaopei/bloom
Users only need to specify the parameter of m
,k
,race
and then can use it.
Example.
filter := bloom.New(1024, 3, false)
// chaining operation
filter.Add([]byte("Hello")).
AddString("World").
AddUInt16(uint16(16)).
AddUInt32(uint32(32)).
AddUInt64(uint64(64)).
AddUint16Batch([]uint16{1, 2, 3})
t.Logf("Hello exist:%t", filter.Test([]byte("Hello")))
t.Logf("World exist:%t", filter.TestString("World"))
t.Logf("uint 16 exist:%t", filter.TestUInt16(uint16(16)))
t.Logf("uint 32 exist:%t", filter.TestUInt32(uint32(32)))
t.Logf("uint 64 exist:%t", filter.TestUInt64(uint64(64)))
In _bloom_test
, the TestFalsePositive
function demonstrates that after inserting 1 million random string key, whose string length is 30 each, this library has
a false positive ratio of 2.82%(0.028200).