Skip to main content

Що таке HyperLogLog?

HyperLogLog (HLL) у Redis - це імовірнісна структура даних для підрахунку кількості унікальних елементів (cardinality) з мінімальними витратами пам'яті.

Простими словами

Якщо тобі потрібно дізнатися:

  • скільки унікальних користувачів зайшло на сайт,
  • скільки унікальних IP / подій / ID було,
  • і при цьому не зберігати всі значення,

HyperLogLog вирішує цю задачу дуже ефективно.

Ключові властивості

ВластивістьЗначення
ТипІмовірнісний алгоритм
ПризначенняПідрахунок унікальних значень
Пам'ять~12 КБ незалежно від кількості елементів
Точність±0.81%
ШвидкістьДуже висока
Зберігає самі значення?Ні

Важливо: HLL не повертає самі елементи, лише наближену кількість.

Як працює (інтуїтивно)

  1. Елементи хешуються
  2. Аналізується розподіл бітів
  3. За математичною моделлю оцінюється кількість унікальних значень

Redis зберігає компактне статистичне представлення, а не список значень.

Команди Redis для HyperLogLog

PFADD - додати елементи

redis
PFADD users 1 2 3 4

PFCOUNT - отримати кількість унікальних

redis
PFCOUNT users

PFMERGE - об'єднати кілька HLL

redis
PFMERGE all_users users_day1 users_day2

Приклад реального кейсу

Унікальні користувачі за день

redis
PFADD visitors:2025-12-22 user_123 PFADD visitors:2025-12-22 user_456 PFCOUNT visitors:2025-12-22

Навіть якщо користувачів 10 млн, пам'ять все одно ~12 КБ.

Порівняння з іншими підходами

Set

redis
SADD users user1 user2 user3 SCARD users
SetHyperLogLog
ТочноНаближено
Зберігає значенняНі
Пам'ять ростеПам'ять фіксована
Підходить для аналітикиТак

Коли варто використовувати HyperLogLog

Чудово підходить для:

  • DAU / MAU / WAU
  • аналітики трафіку
  • подій, кліків, переглядів
  • великих систем (мільйони / мільярди ID)

Не підходить, якщо:

  • потрібна 100% точність
  • потрібно перебирати елементи
  • потрібен exists, remove

Часті питання

Наскільки велика похибка?

Близько 0.81% Наприклад:

  • реальне значення: 1 000 000
  • результат: ~992 000 - 1 008 000

Чи можна зменшити похибку?

Ні, у Redis - розмір і точність фіксовані реалізацією.

Чи можна видаляти елементи?

Ні. Лише додавання.

Коротка формула вибору

Потрібна унікальна кількість + багато даних + мінімальна пам'ять → HyperLogLog

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.