| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- <?php
- namespace common\helpers;
- class Blooms
- {
- public $seeds = [1, 2, 3];
- public $key = 'bloom_filter';
- public $size = null;
- public function __construct()
- {
- $this->size = pow(2, 32);
- }
- public function addToBloomFilter($element)
- {
- foreach ($this->seeds as $seed) {
- $str = $element . $seed;
- $value = crc32($str);
- $int_value = $value % $this->size;
- $res = \Yii::$app->redis->setbit($this->key . $seed, $int_value, 1);
- if ($res) {
- return false;
- }
- }
- return true;
- }
- public function isInBloomFilter($element)
- {
- foreach ($this->seeds as $seed) {
- $str = $element . $seed;
- $value = crc32($str);
- $int_value = $value % $this->size;
- $res = \Yii::$app->redis->getbit($this->key. $seed, $int_value);
- if ($res == false) {
- return false;
- }
- }
- return true;
- }
- }
|