如何从大数据集中更方便地检测重复?

时间:2018-10-09 04:12:44

标签: php bitmap bigdata

当前过程如下:
1.取得长度为24的号码。
2.如果该数字在当前数据集中重复,则返回true;否则,返回true。否则,返回false并使数字加入数据集。

现在,我使用redis集类型来存储数据集。问题是,现在的存储容量已超过5G,这导致数据集随着用户的增加而变得庞大。

如果我想减少存储量并保持快速检测速度,我可以选择任何计划吗?甚至替换redis也可以。

直到现在,我已经考虑过使用树结构来存储数据集而不是redis set类型。但是当我使用php数组(如树)来存储数据集时。存储空间更大。

function isUnique($mobile){
    $arr = str_split($mobile, 10);
    global $tree;
    $isUnique = false;
    $tmp = $tree;
    foreach($arr as $item){
        if(! isset($tmp[$item])){
            $isUnique = true;
            break;
        }
        $tmp = $tmp[$item];
    }
    unset($tmp);

    if($isUnique){
         $tmp = &$tree;
        $keys = [];
        foreach($arr as $value){
            if(empty($tmp[$value])){
                $tmp[$value] = [];
            }
            $tmp = &$tmp[$value];
        }
    }
    unset($tmp);
    return $isUnique;
}

朋友们建议使用位图保存数据。但该数字为24位长,该位图仍会用尽存储空间。

任何人都可以提出一些想法,思考很多。

0 个答案:

没有答案