TGViewer
Python/ django Python/ django @pythonl · 58.8K subscribers
Post #5532 6.43K
⚡️ Как Redis считает миллиарды уникальных значений, почти не тратя память

Есть алгоритм HyperLogLog. Он позволяет примерно понять, сколько уникальных элементов прошло через систему, используя около 12 KB памяти.

Идея простая: Redis не хранит сами элементы.

Он делает так:

- берёт элемент
- считает от него хеш
- часть хеша использует как номер ячейки
- в другой части смотрит, сколько нулей подряд встретилось
- если новое число больше старого - обновляет ячейку

Почему это работает?

Потому что длинная серия нулей в хеше встречается редко.

Например:

- 1 ноль подряд - довольно часто
- 5 нулей подряд - уже реже
- 10 нулей подряд - примерно шанс 1 к 1024
- 20 нулей подряд - совсем редкое событие

Если Redis увидел очень редкий паттерн, значит через него, скорее всего, прошло много разных элементов.

В Redis используется 16 384 маленьких счётчика. Каждый хранит максимальную «редкость», которую видел для своей группы элементов.

Потом Redis объединяет эти значения математикой и получает оценку уникальных элементов.

Не точное число, а очень близкую оценку.

Главный прикол HyperLogLog:

он может обработать хоть миллионы, хоть миллиарды значений, но память почти не растёт.

Именно поэтому Redis умеет считать уникальных пользователей, IP, запросы или события без огромных таблиц и списков.
  • 🔥 26
  • ❤ 13
  • 👍 7
More from @pythonl
  1. Sep 24, 2026Линтер для инструкций ИИ-агентов LintLang проверяет AGENTS.md, CLAUDE.md, SKILL.md, описан…
  2. Sep 24, 2026‼️Ваши данные уже слиты. Вопрос лишь в том, кто и как ими воспользуется. Только в 2025 год…
  3. Sep 24, 2026⚡️ OmniVoice - открытая модель озвучки с поддержкой более 600 языков. Она умеет клонироват…
  4. Sep 23, 2026⚡ Qwen представила Audio 3.1 - единый стек для ASR, TTS и realtime-аудио. Главное: * ASR л…
  5. Sep 20, 2026🐍 Ruff доволен, mypy молчит, тесты зелёные. А в коде четыре одинаковых функции Автор стат…
  6. Sep 19, 2026🐍 В CPython одно чтение `__dict__` может навсегда замедлить доступ к атрибутам конкретног…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →