Database/NoSQL

[redis] 레디스 데이터 타입 - Sets

코딩for 2022. 10. 6. 10:36
반응형

레디스 세트

Redis 세트 소개

Redis 세트는 순서가 지정되지 않은 고유 문자열(구성원) 모음입니다. Redis 세트를 사용하여 효율적으로 다음을 수행할 수 있습니다.

  • 고유 항목을 추적합니다(예: 주어진 블로그 게시물에 액세스하는 모든 고유 IP 주소 추적).
  • 관계(예: 주어진 역할을 가진 모든 사용자의 집합)를 나타냅니다.
  • 교집합, 합집합 및 차분과 같은 일반적인 집합 연산을 수행합니다.

  • 사용자 123 및 456에 대한 즐겨찾기 도서 ID 세트 저장:
> SADD user:123:favorites 347
(integer) 1
> SADD user:123:favorites 561
(integer) 1
> SADD user:123:favorites 742
(integer) 1
> SADD user:456:favorites 561
(integer) 1
  • 사용자 123이 책 742 및 299를 좋아하는지 확인하십시오.
> SISMEMBER user:123:favorites 742
(integer) 1
> SISMEMBER user:123:favorites 299
(integer) 0
  • 사용자 123과 456은 공통적으로 좋아하는 책이 있습니까?
> SINTER user:123:favorites user:456:favorites
1) "561"
  • 사용자 123이 즐겨찾는 책은 몇 권입니까?
> SCARD user:123:favorites
(integer) 3

제한

Redis 세트의 최대 크기는 2^32 - 1(4,294,967,295) 구성원입니다.

기본 명령

  • SADD집합에 새 구성원을 추가합니다.
  • SREM집합에서 지정된 멤버를 제거합니다.
  • SISMEMBER집합 구성원에 대한 문자열을 테스트합니다.
  • SINTER두 개 이상의 집합이 공통으로 갖는 구성원 집합(즉, 교차)을 반환합니다.
  • SCARD집합의 크기(일명 카디널리티)를 반환합니다.

set 명령의 전체 목록을 참조하십시오 .

성능

항목이 집합 구성원인지 여부를 추가, 제거 및 확인하는 등 대부분의 집합 작업은 O(1)입니다. 이것은 그들이 매우 효율적이라는 것을 의미합니다. 그러나 수십만 명 이상의 구성원이 있는 대규모 집합의 경우 SMEMBERS명령을 실행할 때 주의해야 합니다. 이 명령은 O(n)이며 단일 응답으로 전체 집합을 반환합니다. 대안 SSCAN으로 세트의 모든 구성원을 반복적으로 검색할 수 있는 를 고려하십시오.

대안

대규모 데이터 세트(또는 스트리밍 데이터)에 대한 구성원 확인을 설정하면 많은 메모리를 사용할 수 있습니다. 메모리 사용량이 걱정되고 완벽한 정밀도가 필요하지 않은 경우 세트의 대안으로 Bloom 필터 또는 Cuckoo 필터 를 고려하십시오.

Redis 세트는 일종의 인덱스로 자주 사용됩니다. 데이터를 인덱싱하고 쿼리해야 하는 경우 RediSearch  RedisJSON 을 고려하세요 .

더 알아보기

 

참고(번역) : https://redis.io/docs/data-types/sets/

 

Redis sets

Introduction to Redis sets

redis.io

 

 

반응형