Основные данныеАналитика

Подсчёт в большом масштабе с вероятностными структурами

Уникальные посетители, «видели ли мы это?», топ элементов и частоты по миллиардам событий, каждое в небольшом фиксированном объёме памяти.

вероятностные структуры
4
память на структуру
Фиксированная
границы ошибки
Известные
Шаг 1 из 5
Уникальные посетители

Добавляйте идентификаторы посетителей в HyperLogLog. Память остаётся небольшой, сколько бы их ни пришло.

Пример сеансаplaying
# Уникальные посетители
hotkv> PFADD visitors:2026-10-16 user:42 user:77 user:91
(integer) 1

Анимированная демонстрация с настоящими командами HotKV и примерами ответов. Нажмите на любой шаг, чтобы перейти к нему. Команды и ответы остаются на английском, ровно так, как вы вводите и видите их в HotKV.

Проблема

Точные ответы на вопросы «сколько уникальных пользователей», «мы уже отправляли это письмо» или «каковы самые частые запросы» требуют памяти, растущей с каждым различным элементом. При миллиардах событий это превращается в гигабайты множеств и счётчиков на каждый вопрос.

Как с этим справляется HotKV

Вероятностные структуры обменивают небольшую, известную погрешность на постоянный объём памяти. HyperLogLog считает различные элементы, фильтры Блума отвечают о принадлежности, Top-K отслеживает самые частые элементы, а Count-min sketch оценивает, как часто встречался любой элемент. Все четыре встроены в HotKV.

Шаг за шагом

Что происходит, команда за командой

  1. 01

    Уникальные посетители

    Добавляйте идентификаторы посетителей в HyperLogLog. Память остаётся небольшой, сколько бы их ни пришло.

    PFADD visitors:2026-10-16 user:42 user:77 user:91
  2. 02

    Сколько?

    Оценка числа различных посетителей с небольшой стандартной ошибкой.

    PFCOUNT visitors:2026-10-16
  3. 03

    Никогда не отправляем дважды

    Перед отправкой рекламного письма проверьте, получал ли его уже этот адрес.

    BF.EXISTS sent:campaign:fall ada@example.com
  4. 04

    Топ запросов

    Top-K хранит самые частые элементы по мере поступления событий.

    TOPK.LIST searches:today WITHCOUNT
  5. 05

    Как часто для любого элемента

    Count-min sketch оценивает число для любого элемента, есть он в списке или нет.

    CMS.QUERY pageviews /home /pricing /blog
Где это уместно

Реальные сценарии

Веб- и приложенческая аналитика

Ежедневные и ежемесячные уникальные пользователи по странице или функции, объединяемые по дням через PFMERGE.

Письма и уведомления

Фильтры Блума предотвращают повторные отправки при повторных попытках и кампаниях.

Поиск и торговля

Самые частые запросы и самые просматриваемые товары отслеживаются вживую для мерчандайзинга.

Встроено

Что вы получаете

HyperLogLog

Подсчёт различных элементов, объединяемый между интервалами.

PFADDPFCOUNTPFMERGE

Фильтры Блума

Принадлежность с настраиваемой долей ложных срабатываний.

BF.RESERVEBF.ADDBF.EXISTS

Top-K

Самые частые элементы в потоке.

TOPK.ADDTOPK.LIST

Count-min sketch

Оценки частоты для любого элемента.

CMS.INCRBYCMS.QUERY

Частые вопросы

Насколько они точны?

Для фильтров Блума вы задаёте долю ошибок, для Count-min sketch - ширину и глубину. У HyperLogLog небольшая фиксированная стандартная ошибка.

Может ли фильтр Блума пропустить то, что уже видел?

Нет. Он может дать ложное срабатывание, но никогда не даёт ложного отрицания.

Нужен ли модуль?

Нет. Они входят в HotKV.

Связанные сценарии

Попробуйте на своей нагрузке

HotKV понимает протокол Redis, поэтому вы можете подключить к нему существующий клиент и выполнить те же команды.