# 简述 bloomfilter,及它的使用场景是什么
Issue
欢迎在 Gtihub Issue 中回答此问题: Issue 331 (opens new window)
Author
一个以计算来换取空间的概率算法,分配一个连续的内存 (m 位的位数组),将目标通过 k 个 hash 函数,每个 hash 函数映射到位数组上。查询时通过所有的 k 个 hash 函数计算是否为 1。只要有一个 0 则不存在,全部为 1 也不是一定存在。所以 bloomfilter 适合希望减少内存占用,但允许判断存在 True 出现误判。不允许误差的使用的场景是在缓存或数据库的上层加上 bloomfilter,判断是否存在,如果不存在就不去操作缓存或者数据库层。允许误差的情况下使用场景就较多,可以参考 redis set 的使用场景。