PHP code example of davidyou / bloom-filter

1. Go to this page and download the library: Download davidyou/bloom-filter library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

davidyou / bloom-filter example snippets




avidyou\BloomFilter\BloomFilter;
use Davidyou\BloomFilter\Handler\BitMapHandler;
use Davidyou\BloomFilter\Handler\BitMap\BitMap;

$errorRate = 0.001;//容错率取值
$capacity = 10000; //容量
$handler = new BitMapHandler('user', $errorRate, $capacity);
$handler->switch(new BitMap($capacity));//指定使用 bitmap,或其它实现了BitMapInterface接口的类

$bloomFilter = new BloomFilter($handler);

$bloomFilter->add('li ming');
$bloomFilter->add('yang li');
// ... add more

$bloomFilter->exists('yang li'); // true - 可能存在
$bloomFilter->exists('lili'); // false - 绝对不存在


use Davidyou\BloomFilter\BloomFilter;
use Davidyou\BloomFilter\Handler\RedisBitMapHandler;

$capacity = 100000;
$errorRate = 0.001;

$handler = new RedisBitMapHandler('user', $errorRate, $capacity, ['host'=>'192.168.111.71']);

$bloomFilter = new BloomFilter($handler);

$bloomFilter->add('item1');
$bloomFilter->add('item2');
$bloomFilter->add('item3');

$bloomFilter->exists('item1'); // true
$bloomFilter->exists('item5'); // false
$bloomFilter->exists('item3'); // true

// The following call will return false with a 0.1% probability of
// being true as long as the amount of items in the filter are < 100000
$bloomFilter->exists('non-existing-item'); // false


use Davidyou\BloomFilter\BloomFilter;
use Davidyou\BloomFilter\Handler\RedisHandler;

$capacity = 100000;
$errorRate = 0.001;

$handler = new RedisHandler(['host' => '127.0.0.1', 'part'=>6380, 'auth' => 123456])
$handler->reserve('user', $errorRate, $capacity);

$bloomFilter = new BloomFilter($handler);

$bloomFilter->add('item1');
$bloomFilter->add('item2');
$bloomFilter->add('item3');

$bloomFilter->exists('item1'); // true
$bloomFilter->exists('item2'); // true
$bloomFilter->exists('item3'); // true

// The following call will return false with a 0.1% probability of
// being true as long as the amount of items in the filter are < 100000
$bloomFilter->exists('non-existing-item'); // false