我正在尝试使用bloom/cuckoo过滤器来检查我是否已经存储了2个数字的元组fe(7,25),(47,1576),...等
In [12]: from cuckoo.filter import ScalableCuckooFilter
In [13]: c = ScalableCuckooFilter(initial_capacity=1000000, error_rate=0.0001)
In [14]: c.filters[0].buckets.buffer_info()
Out[14]: (140042688086032, 8500000, 'big', 0, 8500000, 0, 0, 0)
In [15]: 8500000/(1024*1024)
Out[15]: 8.106 MB
要存储数字,我每个数字需要 2 个字节,所以 100 万 * 4 字节 = 3.8 Mb
所以过滤器比数据大!
有没有适合内存占用较少的数字的方法或结构?