rocket-labs/bloom-filter

此包最新版本(20170331)没有可用的许可信息。

Bloom过滤器实现

20170331 2016-12-01 16:37 UTC

This package is not auto-updated.

Last update: 2024-09-17 04:28:25 UTC


README

PHP 8 支持是实验性的。

PHP Bloom 过滤器

Bloom过滤器是一种由Burton Howard Bloom在1970年构思的空间高效概率数据结构,用于测试一个元素是否是集合的成员(可能出现误报,但不会出现漏报)。

<?php

use \RocketLabs\BloomFilter\Persist\Redis;
use \RocketLabs\BloomFilter\BloomFilter;
use \RocketLabs\BloomFilter\Hash\Murmur;
use \RocketLabs\BloomFilter\Persist\BitString;

$setToStore = [
    'Test string 1',
    'Test string 2',
    'Test string 3',
    'Test string 4',
    'Test string 5',
];

$redisParams = [
    'host' => 'localhost',
    'port' => 6379,
    'db' => 0,
    'key' => 'bloom_filter',
];
$persisterRedis = Redis::create($redisParams);
$persisterInRam = new BitString();

$filter = new BloomFilter($persisterRedis, new Murmur());
$filter->setSize(count($setToStore));

foreach ($setToStore as $string) {
    $filter->add($string);
}

if ($filter->has('Test string 1')) {
    echo 'Possibly in set"' . PHP_EOL;
} else {
    echo 'Definitely not in set' . PHP_EOL;
}