cluster_setslot
Redis CLUSTER SETSLOT
<< CLUSTER GETKEYSINSLOT | CLUSTER SLOTS >> |
---|
Redis CLUSTER SETSLOT
CLUSTER SETSLOT은 슬롯을 이동하는 명령이다.
MIGRATING/IMPORTING 명령 후에 CLUSTER NODES에 해당 슬롯의 정보를 볼 수 있다.  
빈 슬롯은 SETSLOT 명령만으로 이동이 가능하나, 키가 있는 슬롯은
importing/migrating 후 MIGRATE 명령으로 데이터를 이동한 후, setslot node를 사용해야 한다.
이 문서는 버전 3.2.0을 기준으로 만들었습니다.
사용법
- MIGRATING : 소스 노드의 슬롯을 다른(타겟) 노드로 보내기로 예약한다.
- IMPORTING : 타켓 노드에서 다른(소스) 노드에 있는 슬롯을 가져오기로 예약한다.
- STABLE : 보내기/가져오기 예약을 취소한다.
- NODE : 자신이 가지고 있는 슬롯을 대상 노드로 보낸다.
CLUSTER SETSLOT MIGRATING
사용법: source-node> CLUSTER SETSLOT <slot> MIGRATING <destination-node-id>
다음은 7000번 서버에서 4998 슬롯을 7001번 서버로 보내기(migrating) 예약하는 명령이다.
4998 슬롯은 키 "key2"를 가지고 있다.
실제 이동은 SETSLOT <slot> NODE <node-id> 명령으로 한다.
OK
예약의 효과: 예약을 하면 그 슬롯에 더 이상 키를 입력받지 않아, 슬롯 이동을 수월하게 한다.
보내기 예약을 한 후 그 슬롯에 대한 키 입력 처리 방식
- 예약 시점에 슬롯에 키가 있었다면, 그 키에 대한 명령은 정상적으로 처리된다. "key2"가 슬롯 4998인데, 4998을 보내기 예약했을 때, SET, GET, DEL 명령 등은 정상적으로 처리된다.
- 예약한 슬롯에 현재 키가 없는데, SET, GET, DEL 명령을 입력하면 다음과 같은 메시지가 나오고 처리되지 않는다. 예약한 시점에 키가 있다가 DEL로 삭제된 후에는 "현재 키가 없는 상태"이므로 다시 입력할 수 없다.
(error) ASK 4998 127.0.0.1:7001
127.0.0.1:7000> set key2 VALUE
(error) ASK 4998 127.0.0.1:7001
CLUSTER SETSLOT IMPORTING
사용법: destination-node> CLUSTER SETSLOT <slot> IMPORTING <source-node-id>
다음은 7000번 서버에서 7001번이 가지고 있는 9189 슬롯을 가져오기 예약하는 명령이다.
가져오기 후에도 7001번 서버는 지정한 슬롯에 해당하는 키를 SET, GET, DEL 같은 명령을 실행할 수 있다.
OK
CLUSTER SETSLOT STABLE
사용법: CLUSTER SETSLOT <slot> STABLE
보내기(migrating), 가져오기(importing) 예약을 취소하는 명령이다.
다음은 예약 후 cluster nodes로 정보를 조회해 본 다음 stable로 취소하고,
다시 조회해 본 것이다.
df85034d1e2296df6177a132e48dd8a567bc38d1 127.0.0.1:7000 myself,master - 0 0 6 connected 1-5000 [9189-<-9c69d0294c880bdb76e43405abf2a8050ab13be8]
127.0.0.1:7000> cluster setslot 9189 stable
OK
127.0.0.1:7000> cluster nodes
df85034d1e2296df6177a132e48dd8a567bc38d1 127.0.0.1:7000 myself,master - 0 0 6 connected 1-5000
CLUSTER SETSLOT NODE
사용법: source/destination-node> CLUSTER SETSLOT <slot> NODE <destination-node-id>
슬롯을 대상 노드로 이동시킨다. 슬롯은 비어있어야 한다.
이 명령은 source 노드와 destination 노드에서 각각 실행해야 한다.
보내기(migrating) 또는 가져오기(importing) 예약을 할 필요는 없다.
예약을 했던 하지 않았던 이동 명령은 실행된다.
슬롯에 키가 있다면
COUNTKEYSINSLOT,
GETKEYSINSLOT으로 확인 후
MIGRATE
명령으로 키를 이동시킨다.
내부적으로 CLUSTER DELSLOTS과 ADDSLOTS을 실행한다.
많은 슬롯을 한 번에 이동하기 위해서 다음과 같이 쉘 명령을 이용할 수 있다.
do redis-cli -c -p 7000 cluster setslot $i node df85034d1e2296df6177a132e48dd8a567bc38d1;
done
OK
명령문
CLUSTER SETSLOT slot IMPORTING|MIGRATING|STABLE|NODE [node-id]
- 이 명령은 version 3.0.0 부터 사용할 수 있다.
- 논리적 처리 소요시간은 O(1)이다.
Clients for Java | Jedis, Lettuce | Clients for C | Hiredis |
<< CLUSTER GETKEYSINSLOT | CLUSTER SETSLOT | CLUSTER SLOTS >> |
---|
질문하거나 댓글을 보려면 클릭하세요. 댓글수 : 조회수 :