lyignore/bloom

结合 Redis 实现的 Bloem 算法

dev-master 2019-03-12 08:54 UTC

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');

贡献

您可以通过以下三种方式之一进行贡献:

  1. 使用 问题跟踪器 提交错误报告。
  2. 问题跟踪器 上回答问题或修复错误。
  3. 贡献新功能或更新 wiki。

代码贡献流程并不非常正式。您只需确保遵循 PSR-0、PSR-1 和 PSR-2 编码规范。任何新的代码贡献都必须附带适用的单元测试。

许可

MIT