129 читали · 1 неделю назад
⚡️ Как Redis считает миллиарды уникальных значений, почти не тратя память
Есть алгоритм HyperLogLog. Он позволяет примерно понять, сколько уникальных элементов прошло через систему, используя около 12 KB памяти. Идея простая: Redis не хранит сами элементы. Он делает так: - берёт элемент - считает от него хеш - часть хеша использует как номер ячейки - в другой части смотрит, сколько нулей подряд встретилось - если новое число больше старого - обновляет ячейку Почему это работает? Потому что длинная серия нулей в хеше встречается редко. Например: - 1 ноль подряд -...