Как обнаружить повтор более удобно из большого набора данных? - PullRequest
0 голосов
/ 09 октября 2018

Текущий процесс следующий:
1. ПОЛУЧИТЕ длину номера 24.
2. если число повторяется в текущем наборе данных, верните true;иначе верните false и сделайте так, чтобы число присоединилось к набору данных.

теперь я использую тип набора redis для хранения набора данных.вопрос заключается в том, что объем хранилища теперь превышает 5 ГБ, поскольку набор данных становится все больше с увеличением количества пользователей.

и, если я хочу уменьшить объем хранилища и сохранить скорость обнаружения быстро, любой планя могу выбрать?даже заменить redis - это нормально.

до сих пор have Я думаю об использовании древовидной структуры для хранения набора данных вместо типа набора redis.но когда я использую массив 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 бита, растровое изображение будет по-прежнему использоваться вне хранилища.

любой может дать некоторые идеи, много думает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...