1. SADD key "member_1" "member_2" ... : 해당 key에 member 추가
SortedStes를 사용하여 순서대로 조회 가능.
명령> sadd myset "멤버_1"
결과> 1
명령> sadd myset "멤버_2" "멤버_3" "멤버_4"
결과> 3 추가된 멤버 개수를 리턴한다
명령> smembers myset 멤버를 조회한다
결과> 1) 멤버_2
2) 멤버_4
3) 멤버_3 특별한 순서 없이 조회된다
4) 멤버_1
2. SREM key "member_1" "member_2" : 집합에서 member삭제. 삭제된 member수를 반환.
명령> sadd myset "멤버_1" "멤버_2"
결과> 2
명령> srem myset "멤버_1"
결과> 1 멤버_1을 삭제했다
명령> smembers myset
결과> 1) 멤버_2
명령> srem myset "멤버_X"
결과> 0 "멤버_X"는 없어서 삭제하지 못했다
3. SMEMBERS key : key의 데이터 조회.
명령> sadd myset "멤버_1" "멤버_2"
결과> 2
명령> sadd myset "멤버_3" "멤버_4"
결과> 2
명령> smembers myset
결과> 1) 멤버_2
2) 멤버_4
3) 멤버_3 특별한 순서 없이 조회됩니다.
4) 멤버_1
Enterprise 서버에는 명령어 뒤에 sort | desc 를 이용해 정렬도 사용가능하다.
4. SCARD key : 키에 있는 멤버 수 반환
명령> sadd myset "멤버_1" "멤버_2"
결과> 2
명령> sadd myset "멤버_3" "멤버_4"
결과> 2
명령> scard myset
결과> 4
Enterprise 서버의 slen도 같은 기능.
5. SUNION key1 key2 : key1, key2의 모든 값을 순서 없이 조회. (중복값은 제외)
명령어에서 key 개수를 늘려 3~4개 이상의 키끼리도 조회 가능 (key 개수 제한x)
명령> sadd myset1 A B C
결과> 3
명령> sadd myset2 B C D
결과> 3
명령> sunion myset1 myset2
결과> 1) C
2) B 특별한 순서 없이 조회됩니다.
3) A
4) D
6. SINTER key1 key2 : key1, key2의 교집합 값을 순서 없이 조회. (중복값은 제외)
명령어에서 key 개수를 늘려 3~4개 이상의 키끼리도 조회 가능 (key 개수 제한x)
명령> sadd myset1 A B C
결과> 3
명령> sadd myset2 B C D
결과> 3
명령> sinter myset1 myset2
결과> 1) B
2) C
7. SDIFF key1 key2 : key1, key2의 차집합 값을 순서 없이 조회.
명령어에서 key 개수를 늘려 3~4개 이상의 키끼리도 조회 가능(key 개수 제한x)
명령> sadd myset3 C E
결과> 2
명령> sdiff myset1 myset2 myset3
결과> 1) A
8. SUNIONSTORE destination_key key1 key2 : key1,2 의 합집합을 목적key에 저장.
key개수에 제한x.
SINTERSTORE : 교집합
SDIFFSOTRE : 차집합
명령> sadd myset1 A B C
결과> 3
명령> sadd myset2 B C D
결과> 3
명령> sunionstore dest_key myset1 myset2
결과> 4
명령> smembers dest_key
결과> 1) A
2) B
3) C
4) D
SUNIONSTORE myset1 myset1 myset2 myset3
myset1의 기존 내용은 지워지고, 결과가 myset1에 들어간다.
명령> sunionstore myset1 myset1 myset2 myset3
결과> 6
명령> smembers myset1
결과> 1) A
2) B
3) C
4) D
5) E
6) F
9. SISMEMBER key member : member가 있는지 확인.
있을경우 1 반환
없으면 0 반환.
명령> sadd myset "멤버_1" "멤버_2"
결과> 2
명령> sismember myset "멤버_1"
결과> 1 있다
명령> sismember myset "멤버_X"
결과> 0 없다
10. SMOVE source_key dest_key member : 소스key의 member값을 dest_key로 이동 후 소스key의 member값 삭제됨.
명령> sadd src_key A B C
결과> 3
명령> sadd dest_key D
결과> 1
명령> smove src_key dest_key A
결과> 1
명령> smembers src_key
결과> 1) B
2) C 소스 집합에서 A 는 지워졌다
명령> smembers dest_key
결과> 1) A 목적 집합 A가 추가되었다
2) D
만약 목적 집합key가 없으면 생성하고 member가 추가된다.
명령> del dest_key 목적 집합 삭제
결과> 1
명령> smove src_key dest_key B
결과> 1
명령> smembers src_key
결과> 1) C
명령> smembers dest_key 목적 집합이 생성되면서 member B가 추가되었다
결과> 1) B
만약 소스집합에 없는 member를 지정하면?
-> 아무작업이 일어나지 않고 0을 반환한다.
11. SPOP key : 해당 key의 랜덤한 member를 꺼내고 기존key에서 해당 mem은 삭제됨.
명령> sadd myset "멤버_1" "멤버_2" "멤버_3"
결과> 3
명령> spop myset
결과> 멤버_2 무작위로 멤버_2가 나왔다
명령> smembers myset
결과> 1) 멤버_3
1) 멤버_1
명령> spop myset
결과> 멤버_1
SPOP key <count> : 지정한 개수만큼 SPOP
3.2버전 이상에서 사용 가능
명령> sadd myset "멤버_1" "멤버_2" "멤버_3"
결과> 3
명령> spop myset 2
결과> 멤버_2
결과> 멤버_1
만약 SPOP으로 무작위 값을 반환 후 삭제하였다면 AOF에 SPOP은 어떻게 기록되는 것이고 redis가 리스타트 되었을때 ㅇ같은 값을 삭제하는 건가?
-> AOF에 SPOP을 기록하지 않고 삭제된 데이터를 SREM명령으로 기록하여 같은 데이터가 삭제된다.
SPOP으로 인한 정합성이 깨질일은 없다.
12. SRANDMEMBER key : 랜덤한 값을 '조회'만 한다. 삭제xxx
명령> sadd myset A B C D
결과> 4
명령> srandmember myset
결과> B
명령> srandmember myset
결과> C
SRANDMEMBER key count : 지정한 count만큼 랜덤 조회.
2.6 버전 이상 부터 가능.
명령> srandmember myset 2
결과> 0) A
1) B
명령> srandmember myset -2
결과> 0) A
1) A
count가 member보다 클경우? -> mem개수 만큼 조회
count가 음수일 경우? -> mem을 중복하여 count만큼 조회.
명령> srandmember myset 6
결과> 0) A
1) B
2) C
3) D
명령> srandmember myset -6
결과> 0) A
1) B
2) C
3) D
4) B
5) C
13. SSCAN key cursor : 일정 단위 개수만큼씩 조회.
cursor값이 0일경우? -> 전부 조회.
SMEMBERS는 한번에 모든 member를 조회하는 반면, sscan은 한번에 약 10개씩 정도 조회한다.
member가 많으면 다음 커서를 지정해서 반복해서 조회한다.
SMEMBERS는 member수가 많을 경우 처리시간이 많이 소요되며, 그 동안 서버가 멈춘것 처럼 보인다.
그 대안으로 나온 것은 SSCAN 이다.
명령> sadd myset A1 A2 A3 B1 B2 B3 C1 C2 C3 D1 D2 D3 E1 E2 E3
결과> 15
명령> sscan myset 0
결과> next cursor -> 11
0) E1
1) A2
2) C2
...
10) B1
명령> sscan myset 11
결과> next cursor -> 0
0) A1
1) D1
2) C3
3) C1
SSCAN key CURSOR COUNT 상수 : 조회 개수 지정 옵션 COUNT
명령> sscan myset 0 count 20
결과> next cursor -> 0
0) E1
1) A2
2) C2
...
14) C1
pattern 조회
sscan key cursor match pattern
명령> sscan myset 0 match B*
결과> next cursor -> 0
0) B3
1) B2
2) B1
SSCAN key cursor [MATCH pattern] [COUNT count]
| Redis - Hashes (1) | 2024.06.16 |
|---|---|
| Redis - Sorted Sets (0) | 2024.06.16 |
| Redis - Lists 데이터 타입, 명령어 (3) | 2024.06.16 |
| Redis - String 데이터 타입, 명령어 (1) | 2024.06.16 |
| Redis - 수정중 6 (0) | 2024.06.15 |