lyignore / bloom
结合 Redis 实现的 Bloem 算法
dev-master
2019-03-12 08:54 UTC
Requires
This package is auto-updated.
Last update: 2024-09-12 21:52:40 UTC
README
结合 Redis 实现的 Bloem 算法。
安装
$ composer require lyignore/bloom -vvv
使用
实现了 Bloom 过滤器,引入了 Redis 的 bitmap,用 bitmap 替换 int 模拟的数组,节省了内存空间。可以自定义 bitmap 存储地址,如果不手动删除 bitmap,则会永久存储。
require __DIR__ .'/vendor/autoload.php';
use Lyignore\Bloom\BloomFilter;
use Lyignore\Bloom\BitArray;
$config = [
'redis' => [
'scheme' => 'tcp',
'redis_host' => '127.0.0.1',
'redis_password' => null,
'redis_port' => '6379'
],
'path' => 'test:bitArr',
'bitArrayLen' => 100000, //位数组长度
'dataAmount' => 1000000 //集合总量
];
$list = array(
'http://test/1',
'http://test/2',
'http://test/3',
'http://test/4',
'http://test/5',
'http://test/6',
'http://test/1',
'http://test/2',
);
$bloom = new BloomFilter($config);
foreach($list as $k => $v){
if($bloom->find($v)){
echo $v."已经存在\n";
}else{
$bloom->add($v);
echo "添加".$v."\n";
}
}
//删除bitmap
$bloom->delete('test:bitArr');
贡献
您可以通过以下三种方式之一进行贡献:
代码贡献流程并不非常正式。您只需确保遵循 PSR-0、PSR-1 和 PSR-2 编码规范。任何新的代码贡献都必须附带适用的单元测试。
许可
MIT