golang 實現bloom filter

今天下午不知怎麼了,忽然腦子裏出現了bloom filter這個東西。作爬蟲這麼久了,還沒找到過應用場景,就想着本身實現一個玩玩。原理很簡單. 先定義一個n長的數組, 每位都爲0, 添加記錄時進行k次hash, 再將hash出的int % n做爲index, 將對應index位設置成1. 每次判斷時都去作一樣的操做,判斷是否每一位都是1,只要有一位不是1,則這條記錄確定不存在. 但若是全是1也不必定是存在的。git

bloom filter原理描述網上太多,直接上連接 https://blog.csdn.net/hguisu/article/details/7866173github

根據原理實現了簡單的支持redis, 內存, 文件三種工做模式的bloom filter.redis

https://github.com/lujinda/simplebloom數組

相關文章
相關標籤/搜索