Computer >> 컴퓨터 >  >> 프로그래밍 >> Redis

Redis ZUNIONSTORE 명령어 – Redis에서 정렬된 집합(Sorted Set)의 합집합 구하는 방법

이 튜토리얼에서는 Redis ZUNIONSTORE 명령어를 사용하여 Redis 데이터 저장소에 저장된 두 개 이상의 정렬된 집합(sorted set)에 대해 합집합 연산을 수행하는 방법을 알아봅니다.

집합의 합집합(Union)이란?

집합론에서 두 개 이상의 집합의 합집합은 해당 집합들에 존재하는 모든 원소(중복 없이)를 포함하는 집합을 의미합니다. 예를 들면 다음과 같습니다.

A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8, 9}

A와 B의 합집합 :-
A U B = {1, 2, 3, 4, 5, 6, 7, 8, 9}

ZUNIONSTORE 명령어란?

ZUNIONSTORE 명령어는 지정된 두 개 이상의 정렬된 집합에 대해 합집합 연산을 수행하고, 그 결과로 생성된 새로운 정렬된 집합을 지정된 키(destination)에 저장합니다. 존재하지 않는 정렬된 집합은 빈 정렬된 집합으로 간주되며, 키가 존재하지만 해당 키에 저장된 값이 정렬된 집합이 아닌 경우에는 오류가 반환됩니다.

문법(Syntax)

redis host:post> ZUNIONSTORE <destination> numkeys <keyName> [<keyName>] [WEIGHTS weight [weight]] [AGGREGATE SUM|MIN|MAX]

반환값(Output)

- 합집합 연산 결과 원소들을 담고 있는 배열(array) 응답
- 키가 존재하지만 저장된 값이 정렬된 집합이 아닌 경우 오류 반환

주요 옵션 설명

numkeys는 합집합 연산을 수행할 입력 키(정렬된 집합 값을 가진 키)의 개수를 나타냅니다. 입력 키나 다른 인수를 전달하기 전에 반드시 numkeys 인수를 먼저 전달해야 합니다. 연산 결과는 destination 키에 새로운 정렬된 집합으로 저장되며, destination 키가 이미 존재한다면 기존 값은 덮어써집니다.

WEIGHTS 옵션을 사용하면 각 입력 정렬된 집합에 대한 곱셈 계수(가중치)를 지정할 수 있습니다. 즉, 모든 입력 정렬된 집합에 있는 각 원소의 점수(score)는 집계 함수에 전달되기 전에 해당 가중치와 곱해집니다. WEIGHTS 옵션을 지정하지 않으면 곱셈 계수는 기본적으로 1로 적용됩니다.

AGGREGATE 옵션은 합집합 결과를 어떤 방식으로 집계할지 지정하는 데 사용됩니다. 기본값은 SUM이며, 이 경우 원소의 점수는 해당 원소가 존재하는 모든 입력 정렬된 집합에서 합산됩니다. 옵션을 MIN 또는 MAX로 설정하면, 결과 집합에는 해당 원소가 존재하는 입력 정렬된 집합들 중 최소 또는 최대 점수가 저장됩니다.

예제

위 명령어를 redis-cli에서 실행하면 여러 개의 정렬된 집합을 대상으로 합집합을 계산하여 새로운 키에 결과를 저장할 수 있습니다.

참고 자료

  1. ZUNIONSTORE 공식 문서(Redis Docs)

지금까지 Redis ZUNIONSTORE 명령어를 사용하여 두 개 이상의 정렬된 집합에 대해 합집합 연산을 수행하는 방법을 살펴보았습니다. 내용이 유용했다면 댓글로 의견을 남겨주시고, 주변 분들에게도 공유해 주세요!