레디스 SCARD

Lediseu Scard



“Redis 세트는 중복을 포함하지 않는 정렬되지 않은 문자열 모음입니다. 이들은 Java HashSets, Python Sets 등과 매우 유사합니다. 가장 중요한 것은 멤버 추가, 제거 및 확인과 같은 기본 작업이 O(1) 시간 복잡도에서 작동하기 때문에 매우 효율적입니다.”

집합의 구성원

언급했듯이 Redis 세트에는 고유한 문자열 항목이 포함되어 있습니다. 이미 존재하는 항목은 Redis 세트에서 허용되지 않으며 무시됩니다. 또한 단일 세트는 최대 40억 개의 고유 문자열을 보유할 수 있습니다.









고유한 멤버를 보유하는 Redis 집합의 특성은 여러 실제 사용 사례에서 유용합니다.



  • Union, Intersection 및 Difference와 같은 표준 집합 작업을 수행하는 기능.
  • 웹사이트 고유 방문자 추적
  • 실제 엔터티 관계를 나타냅니다.

SCARD 명령

Set Cardinality의 줄임말인 SCARD 명령은 주어진 키에 저장된 집합의 구성원 수를 반환합니다. O(1) 시간 복잡도에서 작동합니다. 즉, SCARD 명령을 실행하는 데 걸리는 시간은 주어진 세트의 구성원 수에 의존하지 않습니다. 항상 일정한 시간이 걸립니다.





SCARD 명령에는 다음과 같이 매우 간단한 구문이 있습니다.

SCARD set_key

set_key: Redis 세트의 키



이 명령은 집합의 구성원 수인 정수 값을 반환합니다.

사용 사례 – 웹사이트 고유 방문자 수 계산

'YummyPizza' 피자 회사가 사람들이 온라인으로 피자를 주문할 수 있는 yummypizza.com이라는 웹사이트를 운영한다고 가정합니다. 판매 및 고객 기반을 추적하기 위해 Redis 데이터베이스를 유지 관리하여 매월 웹 사이트의 모든 고유 방문자를 저장합니다.

사용자가 YummyPizza 웹사이트를 방문할 때마다 사용자 ID가 Redis 데이터베이스에 추가되어야 합니다. 또한 동일한 사용자가 데이터베이스에도 추가되어서는 안 됩니다. 따라서 이상적인 데이터 구조는 고유한 멤버만 저장하는 Redis 집합입니다.

다음과 같이 5명의 사용자가 웹 사이트를 방문했고 이 구성원이 Redis 데이터베이스에 추가되었다고 가정합니다.

SADD YummyPizza방문객:10월 John Mary Raza Stoinis Prince

예상한 대로 정수 5가 반환되었습니다. 즉, 키 '에 저장된 세트에 5개의 멤버가 추가되었음을 의미합니다. YummyPizza방문객:10월.

하루가 끝나면 회사 관리자는 웹 사이트의 총 고유 방문자 수를 확인해야 합니다. 따라서 세트 카디널리티를 계산해야 합니다. 다행스럽게도 이전에 논의한 SCARD 명령은 이러한 유형의 시나리오에서 유용합니다.

키 '에 저장된 세트에서 SCARD 명령을 실행합시다. YummyPizza방문객:10월.

scard YummyPizza방문객:10월

출력은 5이며, 이는 5개의 고유한 멤버가 지정된 집합에 있음을 의미합니다. 이 명령은 너무 빨리 실행됩니다. 회원이 5명이든 50,000명이든 문제가 되지 않습니다. 실행 시간은 일정합니다.

지정된 설정 키가 Redis 데이터베이스에 존재하지 않는다고 가정합니다. 그러면 다음 예제와 같이 출력이 0이 됩니다. 이 경우 데이터베이스에 없는 키를 지정합니다.

존재하지 않는 키

결론

요약하면 Redis 세트는 고유한 문자열을 저장하는 데 이상적인 후보입니다. 논의한 바와 같이 Redis 세트에 대한 가장 중요한 점은 대부분의 관련 세트 작업이 실행되는 데 일정한 시간이 걸린다는 것입니다. SCARD 명령은 지정된 키에 저장된 주어진 집합에 대한 총 집합 구성원 수를 계산하기 위해 가장 많이 사용되는 집합 명령 중 하나입니다. 사용 가능한 집합 구성원 수에 관계없이 이 명령은 출력을 제공하는 데 일정한 시간이 걸립니다. 마지막 예에서 보듯이 set 키가 없으면 출력은 0이 됩니다.