Как обнаружить повтор более удобно из большого набора данных?

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

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

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

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

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

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector