[redis] set

cochocho·2026년 4월 17일

list과 set의 차이점

set은

  • 중복 불가함
  • 순서를 지원하지 않음

redis에서의 set

  • int set
    요소가 적고 정수인 경우
    이때의 set은 정렬된 정수 배열이기 때문에 O(log n)의 검색 시간을 가짐

  • hash table
    요소가 많고 정수가 아닌 경우에 사용
    이때의 set은 값 조회 시 hashing을 거치므로 O(1)의 연산 시간을 소요함

기본적으로 활용하는 방식이 hash table임
*hash table을 따로 보관해야하기 때문에 list보다 저장공간은 많이 소요

set 명령어

sadd

  • n개 추가에 대해 O(n)
    이때 set의 크기가 얼마인지는 상관없는 것
    hash table을 활용해 저장하기 때문
  • 중복 무시(유일성 보장)
  • 순서대로 저장되지 않음

sadd key value [value 여럿]

srem

  • O(n)
  • 요소 제거
    srem key value

smembers

  • set에 있는 member들을 반환
  • O(n)
  • redis는 single thread라는 점에서 이 작업을 위해 다른 작업을 대기시켜버릴 수 있음에 따라 sscan을 사용(커서 기반으로 나눠 조회)

smembers key

sismember

  • set에 있는 member 중 있는지 조회 : hashing을 적용
  • O(1)

sismember key value

집합 연산

  • sinter : 공통된 요소
  • sunion : 구성요소를 중복 제거하고 반환
  • sdiff : 차집합

0개의 댓글