Redis HyperLogLog 연산

RedisBeginner
지금 연습하기

소개

이 랩에서는 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

실습:

  1. redis-cli를 사용하여 Redis 서버에 연결합니다.
  2. users라는 HyperLogLog 를 생성합니다.
  3. 다음 사용자 ID 를 users HyperLogLog 에 추가합니다: user1, user2, user3, user4, user5.
  4. 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

실습:

  1. redis-cli를 사용하여 Redis 서버에 연결합니다.
  2. PFCOUNT 명령을 사용하여 users HyperLogLog 내 고유 사용자 수를 추정합니다.
  3. 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

이제 usersnew_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 명의 고유 사용자가 있다고 추정함을 나타냅니다.

실습:

  1. redis-cli를 사용하여 Redis 서버에 연결합니다.
  2. PFMERGE 명령을 사용하여 usersnew_users HyperLogLog 를 all_users라는 새 HyperLogLog 로 병합합니다.
  3. PFCOUNT 명령을 사용하여 all_users HyperLogLog 에서 고유 사용자 수를 추정합니다.
  4. 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 를 하나로 병합하는 방법을 배웠습니다. 이는 대규모 데이터 세트에서 고유 요소를 추적하는 강력하고 효율적인 방법을 제공합니다.