소개
이 랩에서는 Redis HyperLogLog 연산을 탐구합니다. HyperLogLog 는 Redis 에서 매우 큰 데이터 세트에서도 집합 내 고유 요소의 수를 추정할 수 있는 강력한 데이터 구조입니다. 이는 카디널리티 추정 (cardinality estimation) 이라고 합니다. PFADD를 사용하여 항목을 추가하고, PFCOUNT를 사용하여 고유 항목을 계산하며, PFMERGE를 사용하여 HyperLogLog 를 병합하는 방법을 배우게 됩니다. 이 랩은 고유 사용자를 효율적으로 추적하는 실질적인 경험을 제공할 것입니다.
PFADD 로 항목 추가하기
이 단계에서는 PFADD 명령을 사용하여 HyperLogLog 에 항목을 추가하는 방법을 배웁니다. HyperLogLog 가 존재하지 않으면 PFADD가 자동으로 생성합니다.
PFADD 이해
PFADD 명령은 하나 이상의 요소를 HyperLogLog 에 추가합니다.
구문:
PFADD key element [element ...]
key: HyperLogLog 의 이름입니다.element: HyperLogLog 에 추가할 요소입니다.
예시:
먼저, 터미널에서 redis-cli 명령을 사용하여 Redis 서버에 연결합니다.
redis-cli
이제 myhyperloglog라는 HyperLogLog 를 생성하고 몇 가지 항목을 추가해 보겠습니다.
PFADD myhyperloglog item1 item2 item3
다음과 같은 출력을 볼 수 있습니다.
(integer) 1
(integer) 1 응답은 HyperLogLog 에 적어도 하나의 요소가 추가되었음을 나타냅니다. 모든 요소가 새로운 (고유한) 요소였음을 의미하는 것은 아닙니다.
명령 실행 후 redis-cli를 종료하는 것을 잊지 마세요.
exit
실습:
redis-cli를 사용하여 Redis 서버에 연결합니다.users라는 HyperLogLog 를 생성합니다.- 다음 사용자 ID 를
usersHyperLogLog 에 추가합니다:user1,user2,user3,user4,user5. redis-cli를 종료합니다.
PFADD users user1 user2 user3 user4 user5
exit
다음 단계에서는 PFCOUNT 명령을 사용하여 고유 사용자 수를 추정하는 방법을 배웁니다.
PFCOUNT 로 고유 항목 수 세기
이 단계에서는 PFCOUNT 명령을 사용하여 HyperLogLog 내 고유 항목 수를 추정하는 방법을 배웁니다.
PFCOUNT 이해
PFCOUNT 명령은 HyperLogLog 가 관찰한 집합의 카디널리티 (고유 요소의 수) 에 대한 근사치를 반환합니다. HyperLogLog 가 정확한 개수가 아닌 추정치를 제공한다는 점을 기억하는 것이 중요합니다.
구문:
PFCOUNT key
key: HyperLogLog 의 이름입니다.
예시:
이전 단계에서 계속해서 users HyperLogLog 내 고유 사용자 수를 추정해 보겠습니다.
redis-cli를 사용하여 Redis 서버에 연결합니다.
redis-cli
이제 PFCOUNT 명령을 사용합니다.
PFCOUNT users
다음과 유사한 출력을 볼 수 있습니다.
(integer) 5
출력 (integer) 5는 HyperLogLog 가 users HyperLogLog 에 약 5 명의 고유 사용자가 있다고 추정함을 나타냅니다.
redis-cli를 종료합니다.
exit
실습:
redis-cli를 사용하여 Redis 서버에 연결합니다.PFCOUNT명령을 사용하여usersHyperLogLog 내 고유 사용자 수를 추정합니다.redis-cli를 종료합니다.
PFCOUNT users
exit
이제 중복 항목을 포함하여 더 많은 사용자를 users HyperLogLog 에 추가한 다음 다시 계산해 보겠습니다.
redis-cli
PFADD users user3 user6 user7
PFCOUNT users
exit
다음 단계에서는 HyperLogLog 를 병합하는 방법을 배웁니다.
PFMERGE 로 HyperLogLog 병합하기
이 단계에서는 PFMERGE 명령을 사용하여 여러 HyperLogLog 를 단일 HyperLogLog 로 병합하는 방법을 배웁니다. 이는 여러 HyperLogLog 에 데이터가 분산되어 있고 총 고유 요소에 대한 추정치를 얻고 싶을 때 유용합니다.
PFMERGE 이해
PFMERGE 명령은 여러 HyperLogLog 를 대상 HyperLogLog 로 병합합니다. 대상 HyperLogLog 는 모든 소스 HyperLogLog 의 요소의 합집합을 포함합니다.
구문:
PFMERGE destkey sourcekey [sourcekey ...]
destkey: 대상 HyperLogLog 의 이름 (병합된 결과가 저장될 위치). 존재하지 않으면 생성됩니다. 존재하면 덮어쓰여집니다.sourcekey: 병합할 소스 HyperLogLog 의 이름입니다.
예시:
new_users라는 새 HyperLogLog 를 생성하고 여기에 몇 명의 사용자를 추가해 보겠습니다.
redis-cli
PFADD new_users user8 user9 user10
exit
이제 users 및 new_users HyperLogLog 를 all_users라는 새 HyperLogLog 로 병합해 보겠습니다.
redis-cli
PFMERGE all_users users new_users
다음과 같은 출력을 볼 수 있습니다.
OK
OK 응답은 병합 작업이 성공했음을 나타냅니다.
이제 all_users HyperLogLog 에서 고유 사용자 수를 추정해 보겠습니다.
PFCOUNT all_users
exit
다음과 유사한 출력을 볼 수 있습니다.
(integer) 7
출력 (integer) 7은 HyperLogLog 가 병합된 all_users HyperLogLog 에 약 7 명의 고유 사용자가 있다고 추정함을 나타냅니다.
실습:
redis-cli를 사용하여 Redis 서버에 연결합니다.PFMERGE명령을 사용하여users및new_usersHyperLogLog 를all_users라는 새 HyperLogLog 로 병합합니다.PFCOUNT명령을 사용하여all_usersHyperLogLog 에서 고유 사용자 수를 추정합니다.redis-cli를 종료합니다.
PFMERGE all_users users new_users
PFCOUNT all_users
exit
이것으로 Redis 에서 HyperLogLog 를 사용하는 랩이 완료되었습니다. 항목 추가, 고유 항목 수 세기, HyperLogLog 병합 방법을 배웠습니다.
요약
이 랩에서는 Redis 에서 PFADD 명령을 사용하여 HyperLogLog 데이터 구조에 요소를 추가하는 방법을 배웠습니다. PFADD 명령은 요소 자체를 저장하지 않고도 집합의 카디널리티 (cardinality) 를 추정하기 위해 HyperLogLog 를 효율적으로 업데이트합니다. 또한 PFCOUNT를 사용하여 HyperLogLog 의 카디널리티를 추정하고 PFMERGE를 사용하여 여러 HyperLogLog 를 하나로 병합하는 방법을 배웠습니다. 이는 대규모 데이터 세트에서 고유 요소를 추적하는 강력하고 효율적인 방법을 제공합니다.


