Введение
В этой лабораторной работе вы изучите операции 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
Практическое упражнение:
- Подключитесь к Redis-серверу, используя
redis-cli. - Создайте HyperLogLog с именем
users. - Добавьте следующие идентификаторы пользователей (user IDs) в HyperLogLog
users:user1,user2,user3,user4,user5. - Выйдите из
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
Практическое упражнение:
- Подключитесь к Redis-серверу, используя
redis-cli. - Используйте команду
PFCOUNTдля оценки количества уникальных пользователей в HyperLogLogusers. - Выйдите из
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 уникальных пользователей.
Практическое упражнение:
- Подключитесь к Redis-серверу, используя
redis-cli. - Используйте команду
PFMERGEдля объединения HyperLogLogusersиnew_usersв новый HyperLogLog с именемall_users. - Используйте команду
PFCOUNTдля оценки количества уникальных пользователей в HyperLogLogall_users. - Выйдите из
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 в один. Это предоставляет мощный и эффективный способ отслеживания уникальных элементов в больших наборах данных.


