본문 바로가기
Redis

[Redis] 데이터 타입 Sets

by 신입같은 3년차 2018. 10. 18.

( 출처  http://bcho.tistory.com/654 , http://wiki.pchero21.com/wiki/Redis )


Sets

set은 string의 집합이다. 여러개의 값을 하나의 Value 내에 넣을 수 있다고 생각하면 되며 블로그 포스트의 태깅(Tag)등에 사용될 수 있다.
재미있는 점은 set간의 연산을 지원하는데, 집합인 만큼 교집합, 합집합, 차이(Differences)를 매우 빠른 시간내에 추출할 수 있다.
정렬되지 않은 집합으로 중복된 데이터가 존재하지 않는다.
추가 , 제거 및 존재 유무 체크시 소모되는시간이 요소수에 관계없이 일정하다.
list와 마찬가지로 최대 요소 개수는 4,294,967,295 개이다. 


 
Redis Sets 사용 관련 document https://redis.io/commands/#set


Sets - document에 더 많이 있지만 필요할것같은것만 정리함.

  • SADD - Sets 타입의 key value 추가 ( 다중 추가 가능  Space 구분 )
  • SCARD - Sets에 저장되어있는 요소들의 길이를 반환.
  • SMEMBERS - 해당되는 key값 안의 요소들을 출력
  • SISMEMBER - 해당 요소가 Sets안에 있다면 1 없다면 0을 반환
  • SMOVE - 해당 요소를 다른 key값으로 이동시킨다.
  • SPOP - 요소에 저장된 값들중 해당 갯수만큼 랜덤으로 POP.
  • SRANDMEMBER - 요소에 저장된 값들중 지정된 count만큼 랜덤 반환 ( count가 없으면 1개 반
  • SREM - 저장된 요소중에서 일치하는 요소가 있다면 삭제후 1반환 삭제될요소가 없다면 0을 반환




# SADD를 통한 추가 , SMEMBERS를 이용한 Sets 확인
127.0.0.1:6379> SADD mySet "Choi"
(integer) 1
127.0.0.1:6379> SADD mySet "YunJin"
(integer) 1
127.0.0.1:6379> SADD mySet "YunJin"
(integer) 0
127.0.0.1:6379> SMEMBERS mySet
1) "YunJin"
2) "Choi"

# SCARD 로 길이 출력
127.0.0.1:6379> SCARD mySet
(integer) 2

# SISMEMBER 을 통해 해당 요소가 존재하는지 확인
127.0.0.1:6379> sismember mySet Ch__
(integer) 0
127.0.0.1:6379> sismember mySet Choi
(integer) 1

# SMOVE를 통해 mySet에 있던 Choi를 moveSet으로 이동시킨다. ( 없다면 생성 )
127.0.0.1:6379> SMOVE mySet moveSet Choi
(integer) 1
127.0.0.1:6379> smembers mySet
1) "YunJin"
127.0.0.1:6379> smembers moveSet
1) "Choi"

# SPOP 을 통한 랜덤 요소 POP default count 0
127.0.0.1:6379> SADD popSet A B C D E
(integer) 5
127.0.0.1:6379> SPOP popSet 2
1) "B"
2) "D"
127.0.0.1:6379> SPOP popSet 2
1) "A"
2) "C"
127.0.0.1:6379> SMEMBERS popSet
1) "E"

# SRANDMEMBER를 통한 랜덤한 요소 출력
# SPOP과 다르게 출력은되지만 직접적으로 요소가 빠지지는 않는다.
# Count > 0 , 즉양수라면 중복되지 않는값들의 절대값만큼 출력되고
# Count < 0 라면 중복된 값들이 Count절대값 만큼 출력된다
127.0.0.1:6379> SADD lottoSet 1 2 3 4 5 6 7 8 9 10
(integer) 10
127.0.0.1:6379> SRANDMEMBER lottoSet 6
1) "2"
2) "9"
3) "3"
4) "5"
5) "10"
6) "4"

# SREM 해당 요소 삭제
# lottoSet요소중 1이 삭제됨.
127.0.0.1:6379> SREM lottoSet 1
(integer) 1
127.0.0.1:6379> SMEMBERS lottoSet
1) "2"
2) "3"
3) "4"
4) "5"
5) "6"
6) "7"
7) "8"
8) "9"
9) "10"
반응형

'Redis' 카테고리의 다른 글

[Redis] 데이터 타입 Lists  (0) 2018.10.18
[Redis] 데이터 타입 String  (0) 2018.10.18

댓글