Операции Redis HyperLogLog

RedisBeginner
Практиковаться сейчас

Введение

В этой лабораторной работе вы изучите операции Redis HyperLogLog. HyperLogLog – это мощная структура данных в Redis, которая позволяет оценивать количество уникальных элементов в наборе, даже с очень большими наборами данных. Это известно как оценка кардинальности (cardinality estimation). Вы научитесь использовать PFADD для добавления элементов, PFCOUNT для подсчета уникальных элементов и PFMERGE для объединения HyperLogLog. Эта лабораторная работа предоставит вам практический опыт эффективного отслеживания уникальных пользователей.

Добавление элементов с помощью PFADD

В этом шаге вы узнаете, как добавлять элементы в HyperLogLog с помощью команды PFADD. Если HyperLogLog не существует, PFADD создаст его автоматически.

Понимание PFADD

Команда PFADD добавляет один или несколько элементов в HyperLogLog.

Синтаксис:

PFADD key element [element ...]
  • key: Имя HyperLogLog.
  • element: Элемент(ы), которые нужно добавить в HyperLogLog.

Пример:

Сначала подключитесь к Redis-серверу, используя команду redis-cli в вашем терминале:

redis-cli

Теперь давайте создадим HyperLogLog с именем myhyperloglog и добавим в него несколько элементов.

PFADD myhyperloglog item1 item2 item3

Вы должны увидеть следующий вывод:

(integer) 1

Ответ (integer) 1 указывает на то, что по крайней мере один элемент был добавлен в HyperLogLog. Это не обязательно означает, что все элементы были новыми (уникальными).

Не забудьте выйти из redis-cli после выполнения команды:

exit

Практическое упражнение:

  1. Подключитесь к Redis-серверу, используя redis-cli.
  2. Создайте HyperLogLog с именем users.
  3. Добавьте следующие идентификаторы пользователей (user IDs) в HyperLogLog users: user1, user2, user3, user4, user5.
  4. Выйдите из redis-cli.
PFADD users user1 user2 user3 user4 user5
exit

В следующем шаге вы узнаете, как оценить количество уникальных пользователей с помощью команды PFCOUNT.

Подсчет уникальных элементов с помощью PFCOUNT

В этом шаге вы узнаете, как использовать команду PFCOUNT для оценки количества уникальных элементов в HyperLogLog.

Понимание PFCOUNT

Команда PFCOUNT возвращает приблизительную оценку кардинальности (cardinality, количества уникальных элементов) множества, наблюдаемого HyperLogLog. Важно помнить, что HyperLogLog предоставляет оценку, а не точное количество.

Синтаксис:

PFCOUNT key
  • key: Имя HyperLogLog.

Пример:

Продолжая с предыдущего шага, давайте оценим количество уникальных пользователей в HyperLogLog users.

Подключитесь к Redis-серверу, используя redis-cli:

redis-cli

Теперь используйте команду PFCOUNT:

PFCOUNT users

Вы должны увидеть вывод, похожий на этот:

(integer) 5

Вывод (integer) 5 указывает на то, что HyperLogLog оценивает, что в HyperLogLog users примерно 5 уникальных пользователей.

Выйдите из redis-cli:

exit

Практическое упражнение:

  1. Подключитесь к Redis-серверу, используя redis-cli.
  2. Используйте команду PFCOUNT для оценки количества уникальных пользователей в HyperLogLog users.
  3. Выйдите из redis-cli.
PFCOUNT users
exit

Теперь давайте добавим больше пользователей в HyperLogLog users, включая дубликат, а затем пересчитаем.

redis-cli
PFADD users user3 user6 user7
PFCOUNT users
exit

В следующем шаге вы узнаете, как объединять HyperLogLog.

Объединение HyperLogLog с помощью PFMERGE

В этом шаге вы узнаете, как объединить несколько HyperLogLog в один HyperLogLog с помощью команды PFMERGE. Это полезно, когда у вас есть данные, распределенные по нескольким HyperLogLog, и вы хотите получить оценку общего количества уникальных элементов.

Понимание PFMERGE

Команда PFMERGE объединяет несколько HyperLogLog в целевой HyperLogLog. Целевой HyperLogLog будет содержать объединение элементов из всех исходных HyperLogLog.

Синтаксис:

PFMERGE destkey sourcekey [sourcekey ...]
  • destkey: Имя целевого HyperLogLog (куда будет сохранен объединенный результат). Если он не существует, он будет создан. Если он существует, он будет перезаписан.
  • sourcekey: Имя(имена) исходных HyperLogLog для объединения.

Пример:

Давайте создадим новый HyperLogLog с именем new_users и добавим в него несколько пользователей.

redis-cli
PFADD new_users user8 user9 user10
exit

Теперь давайте объединим HyperLogLog users и new_users в новый HyperLogLog с именем all_users.

redis-cli
PFMERGE all_users users new_users

Вы должны увидеть следующий вывод:

OK

Ответ OK указывает на то, что операция объединения прошла успешно.

Теперь давайте оценим количество уникальных пользователей в HyperLogLog all_users:

PFCOUNT all_users
exit

Вы должны увидеть вывод, похожий на этот:

(integer) 7

Вывод (integer) 7 указывает на то, что HyperLogLog оценивает, что в объединенном HyperLogLog all_users примерно 7 уникальных пользователей.

Практическое упражнение:

  1. Подключитесь к Redis-серверу, используя redis-cli.
  2. Используйте команду PFMERGE для объединения HyperLogLog users и new_users в новый HyperLogLog с именем all_users.
  3. Используйте команду PFCOUNT для оценки количества уникальных пользователей в HyperLogLog all_users.
  4. Выйдите из redis-cli.
PFMERGE all_users users new_users
PFCOUNT all_users
exit

На этом завершается лабораторная работа по использованию HyperLogLog в Redis. Вы узнали, как добавлять элементы, подсчитывать уникальные элементы и объединять HyperLogLog.

Резюме

В этой лабораторной работе вы узнали, как использовать команду PFADD в Redis для добавления элементов в структуру данных HyperLogLog. Команда PFADD эффективно обновляет HyperLogLog для оценки кардинальности (cardinality) множества, не сохраняя сами элементы. Вы также узнали, как использовать PFCOUNT для оценки кардинальности HyperLogLog и PFMERGE для объединения нескольких HyperLogLog в один. Это предоставляет мощный и эффективный способ отслеживания уникальных элементов в больших наборах данных.