A Cuckoo hashing, substituting for bloom filter. written by Go
一个 Cuckoo Filter 的 Go 库
面对海量数据,我们需要一个索引数据结构,用来帮助查询,快速判断数据记录是否存在,这类数据结构叫过滤器,常用的选择是 Bloom Filter
. 而 Cuckoo Filter
是它的优化变种。
Bloom Filter
的位图模式有两个问题:
Cuckoo Filter
,可以确保该元素存在的必然性,又可以在不违背此前提下删除任意元素,仅仅比 Bloom Filter
牺牲了微量空间效率。 它的的数据模型:
go get github.com/zheng-ji/goCuckoo
import (
"fmt"
"github.com/zheng-ji/goCuckoo"
)
func main() {
// speicify capacity
filter := cuckoo.NewCuckooFilter(10000)
filter.Insert([]byte("zheng-ji"))
filter.Insert([]byte("stupid"))
filter.Insert([]byte("coder"))
if filter.Find([]byte("stupid")) {
fmt.Println("exist")
} else {
fmt.Println("Not exist")
}
filter.Del([]byte("stupid"))
filter.Println(filter.Size())
}
Copyright (c) 2016 by zheng-ji released under MIT License.
1
dgkae 2016-07-25 22:00:34 +08:00 1
酷
|
2
Comdex 2016-07-25 22:08:36 +08:00 1
趁机自我推荐一下新手之作: https://github.com/Comdex/octopus
|
3
Charles0429 2016-07-26 13:00:30 +08:00 1
赞一个,正在学 golang
|