Redis Set 타입과 명령어
개요
Redis의 데이터 타입 중 하나인 Set에 대해 알아보자.
Set 데이터 타입
- Set 자료구조는 정렬되지 않은, 중복이 허용되지 않는 자료구조이다.
- Redis에서 Set 에 저장, 제거, 멤버 존재 여부 확인은 모두 O(1) 시간이 소요된다.
- 구조는 아래와 같다.
key: {value1, value2, value3}
예시
redis 127.0.0.1:6379> SADD tutorials redis
(integer) 1
redis 127.0.0.1:6379> SADD tutorials mongodb
(integer) 1
redis 127.0.0.1:6379> SADD tutorials mysql
(integer) 1
redis 127.0.0.1:6379> SADD tutorials mysql
(integer) 0
redis 127.0.0.1:6379> SMEMBERS tutorials
1) "mysql"
2) "mongodb"
3) "redis"
SADD tutorials redis
tutorials
라는 key에redis
를 저장한다.- 이때 중복되는 value는 저장할 수 없다.
SMEMBERS tutorials
tutorials
라는 key에 저장된 모든 아이템을 반환한다.
주요 명령어 Reference
NO. | 명령어 | 설명 | 시간복잡도 |
---|---|---|---|
1 | SADD key member1 member2 … | 해당 key에 하나 이상의 member를 추가한다. | O(N) N: 저장할 member 갯수 |
2 | SCARD key | 해당 key의 멤버 갯수를 반환한다. | O(1) |
3 | SDIFF key1 key2 … | 해당 key들의 차집합(key1 - key2 - …) 결과를 반환한다. | O(N) N: 계산될 모든 Set의 아이템 갯수 |
4 | SDIFFSTORE destination key1 key2 … | 해당 key들의 차집합 결과를 destination에 저장한다. | O(N) N: 계산될 모든 Set의 아이템 갯수 |
5 | SINTER key1 key2 … | 해당 key들의 교집합(key1 ∩ key2 ∩ …) 결과를 반환한다. | O(N*M) N: 가장 작은 Set의 아이템 갯수 M: Set의 갯수 |
6 | SINTERSTORE destination key1 key2 … | 해당 key들의 교집합(key1 ∩ key2 ∩ …) 결과를 destination에 저장한다. | O(N*M) N: 가장 작은 Set의 아이템 갯수 M: Set의 갯수 |
7 | SISMEMBER key member | 해당 key에 해당 member가 있는지 확인한다. 1: 있음, 0: 없음 |
O(1) |
8 | SMEMBERS key | 해당 key의 모든 멤버를 반환한다. | O(N) N: Set의 아이템 갯수 |
9 | SMOVE source destination member | source의 member를 destination에 옮긴다. | O(1) |
10 | SPOP key [count] | 해당 key의 무작위 멤버를 count 개 만큼 꺼낸다. | O(N) N: count |
11 | SRANDMEMBER key [count] | 해당 key의 무작위 멤버를 count 개만큼 반환한다. | O(N) N: count |
12 | SREM key member1 member2 … | 해당 key의 한 개 이상의 member를 제거한다. | O(N) N: 삭제할 아이템 갯수 |
13 | SUNION key1 key2 … | 해당 key들의 합집합(key1 ∪ key2 ∪ …) 결과를 반환한다. | O(N) N: 모든 Set의 아이템 갯수 |
14 | SUNIONSTORE destination key1 key2 … | 해당 key들의 합집합(key1 ∪ key2 ∪ …) 결과를 destination에 저장한다. | O(N) N: 모든 Set의 아이템 갯수 |
15 | SSCAN key cursor [MATCH pattern] [COUNT count] | 해당 key의 몇 개의 멤버 반환 | O(1) 단, 모든 아이템을 조회한 경우 총 O(N) |