ブロンフィルターの勉強の道

1088 ワード

概要:仕事の中で出会うかもしれなくて、大量のデータの重い仕事を処理して、例えば爬虫類、データの洗浄、大きいデータの量の下でデータが存在するかどうかを判断する必要があります.判断の正確性を少し緩めれば、
評価:もしあなたのデータ量が大きくなくて、千万以下で、しかもredis資源が十分であれば、MD 5のhashアルゴリズムを使って32ビット指紋を生成することができて、redisを利用してデータの重さを行って、もし億級甚だしきに至っては更に多くのデータ量があれば、資源の問題を考慮して、結局redisの価格はやはりとても高くて、この時ブロンを利用して濾過することができます.あるいはredisのようなssdbデータベースを利用すると、効率は低くなるかもしれませんが、redisに少し劣るだけです.しかもハードディスクベースで安いです.
def md5_(self,str):
    md5 = hashlib.md5()
    data = str
    md5.update(data.encode('utf-8'))
    return md5.hexdigest()

1、インストール
pip3 install pybloom_live BloomFilterは です.ScalableBloomFilterは に することができる.initial_Capacityは 、error_rateは です.
from pybloom_live import ScalableBloomFilter
sbf = ScalableBloomFilter(initial_capacity=1000000000, error_rate=0.000001, mode=ScalableBloomFilter.LARGE_SET_GROWTH)
url = "www.toutiao.com"
url2 = "www.douban.com"
sbf.add(url)
print(url in sbf)   # True
print(url2 in sbf)  # False

を えると を げ し、