scienide / okbloomer
此包已被废弃,不再维护。没有建议的替代包。
适用于PHP的超低内存使用自扩展Bloom过滤器。
1.0.0
2021-12-08 21:44 UTC
Requires
- php: >=7.4
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- phpbench/phpbench: ^1.0
- phpstan/extension-installer: ^1.0
- phpstan/phpstan: ^0.12.88
- phpstan/phpstan-phpunit: 0.12.*
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2022-02-08 22:13:41 UTC
README
适用于PHP的超低内存足迹的自扩展Bloom过滤器。Ok Bloomer采用分层过滤策略,使其在保持误报率上限的同时可以扩展。每一层由一个位图组成,该位图存储插入的项的哈希签名。如果一个项目被过滤器捕获,那么它可能之前已经见过。然而,如果一个项目通过了过滤器,那么它肯定之前从未见过。Bloom过滤器在缓存系统、流去重、DNA序列计数等许多方面都有应用。
- 超低内存足迹
- 自动扩展适用于流数据
- 有限最大误报率
- 开源并可免费商业使用
安装
使用 Composer 将其安装到您的项目中
$ composer require scienide/okbloomer
要求
- PHP 7.4 或更高版本
Bloom过滤器
一种概率性数据结构,它通过最大误报率估计给定项先前出现的情况。
参数
# | 名称 | 默认值 | 类型 | 描述 |
---|---|---|---|---|
1 | maxFalsePositiveRate | 0.01 | float | 要保持在以下误报率。 |
2 | numHashes | 4 | int, null | 使用的哈希函数数,即每层的切片数。设置为 null 为自动。 |
3 | layerSize | 32000000 | int | 过滤器每层的位数。 |
示例
use OkBloomer\BloomFilter; $filter = new BloomFilter(0.01, 4, 32000000); $filter->insert('foo'); echo $filter->exists('foo'); echo $filter->existsOrInsert('bar'); echo $filter->exists('bar');
true
false
true
测试
要运行单元测试
$ composer test
静态分析
要运行静态代码分析
$ composer analyze
基准测试
要运行基准测试
$ composer benchmark
参考文献
- [1] P. S. Almeida et al. (2007). Scalable Bloom Filters.