- redis4+版本后可以以插件的形式使用布隆过滤器
git clone https://github.com/RedisBloom/RedisBloom
cd RedisBloom
make
redis-server --loadmodule redisbloom.so
当然也可以在配置文件中进行配置
- 创建布隆过滤器
bf.reserve key(键) error_rate(期望错误率) capacity(预期添加到布隆过滤器中的数目)
- 下面演示相关操作
- 创建布隆过滤器
bf.reserve realpeanut 0.01 3
//output OK
//时间复杂度O(1)
//创建键为realpeanut 期望误判率为0.01 预计容量为3
key:可以在其中找到过滤器的键
error_rate:误报的期望概率。这应该是介于0和1之间的十进制值。例如,对于期望的误报率0.1%(1000中为1),error_rate应该设置为0.001。该数字越接近零,则每个项目的内存消耗越大,并且每个操作的CPU使用率越高。
capacity:您打算添加到过滤器中的条目数。添加超过此数量的项目后,性能将开始下降。实际的降级将取决于超出限制的程度。随着条目数量呈指数增长,性能将线性下降。
- 添加元素
bf.add key value
//output value 不存在返回1 存在返回0
//时间复杂度 O(logN)
- 批量添加
bf.madd key value ...
// O(logN)
//output An array of booleans (integers)
- 添加元素,如果过滤器不存在则创建
bf.insert key ITEMS value1 value2 value3 ...
//向 key中添加多个 value key不存在则创建
bf.insert key CAPACITY 10000 ITEMS value
//向key中添加value不存在则创建预期大小为10000的过滤器
- 判断value是否存在
bf.exists key value //判断 1个值
bf.mexists key value... //判断多个值
- 查看过滤器信息
bf.info key