Redis CLUSTER SETSLOT

레디스 클러스터 교육 레디스 정기점검/기술지원
Redis Technical Support
레디스 엔터프라이즈 서버
Redis Enterprise Server

Redis CLUSTER SETSLOT

CLUSTER SETSLOT은 슬롯을 이동하는 명령이다.
IMPORTING/MIGRATING 명령 후에 CLUSTER NODES에 해당 슬롯의 정보를 볼 수 있다.   빈 슬롯은 SETSLOT 명령만으로 이동이 가능하나, 키가 있는 슬롯은 importing/migrating 후 MIGRATE 명령으로 데이터를 이동한 후, setslot node를 사용해야 한다.

이 문서는 버전 3.2.0을 기준으로 만들었습니다.

사용법


CLUSTER SETSLOT IMPORTING

사용법: destination-node> CLUSTER SETSLOT <slot> IMPORTING <source-node-id>
다음은 7001번 서버에서 7000번이 가지고 있는 0번 슬롯을 가져오기(importing) 예약하는 명령이다.

127.0.0.1:7001> cluster setslot 0 importing 4b756c6287bc5a6b5bf1cddab16584c51233da2d
OK

CLUSTER SETSLOT MIGRATING

사용법: source-node> CLUSTER SETSLOT <slot> MIGRATING <destination-node-id>
다음은 7000번 서버에서 0번 슬롯을 7001번 서버로 보내기(migrating) 예약하는 명령이다.

127.0.0.1:7000> cluster setslot 0 migrating aec338f2201bef75cff1b43c3c57ee884265b604
OK

예약의 효과: importing/migrating 예약 한 후 그 슬롯에 대한 키 입력 처리 방식

  • 예약이 완료된 후 7000번 서버의 해당 슬롯에 속하는 키를 입력하면 "ASK ip:port"가 리턴된다. 그러면 대상 ip:port에 'ASKING' 명령 실행 후 입력 명령을 실행하면 정상적으로 처리된다.
  • 127.0.0.1:7000> set key04599 value
    (error) ASK 0 127.0.0.1:7001
    127.0.0.1:7001> ASKING
    OK
    127.0.0.1:7001> set key04599 value
    OK

CLUSTER SETSLOT NODE

사용법: source/destination-node> CLUSTER SETSLOT <slot> NODE <destination-node-id>
슬롯을 대상 노드로 이동시킨다.   이 명령은 source 노드와 destination 노드에서 각각 실행해야 한다.
슬롯에 키가 있다면 가져오기(importing), 보내기(migrating) 예약하고 COUNTKEYSINSLOT, GETKEYSINSLOT으로 확인 후 MIGRATE 명령으로 키를 이동시킨다.
내부적으로 CLUSTER DELSLOTS과 ADDSLOTS을 실행한다.
키가 있는 슬롯은 아래와 같은 순서로 이동한다.
1) Setslot Importing
2) Setslot Migrating
3) Migrate
4) Setslot Node

키가 없는 슬롯은 다음과 같이 쉘 명령으로 여러 슬롯을 이동할 수 있습니다.

# for i in {0..100};
do redis-cli -c -p 7000 cluster setslot $i node aec338f2201bef75cff1b43c3c57ee884265b604;
done
OK

CLUSTER SETSLOT STABLE

사용법: CLUSTER SETSLOT <slot> STABLE
보내기(migrating), 가져오기(importing) 예약을 취소하는 명령이다.
다음은 예약 후 cluster nodes로 정보를 조회해 본 다음 stable로 취소하고, 다시 조회해 본 것이다.

127.0.0.1:7000> cluster nodes
4b756c6287bc5a6b5bf1cddab16584c51233da2d 127.0.0.1:7000 myself,master - 0 0 6 connected 0-5000 [0->-aec338f2201bef75cff1b43c3c57ee884265b604]
127.0.0.1:7000> cluster setslot 0 stable
OK
127.0.0.1:7000> cluster nodes
4b756c6287bc5a6b5bf1cddab16584c51233da2d 127.0.0.1:7000 myself,master - 0 0 6 connected 0-5000

명령문

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 >>

Email 답글이 올라오면 이메일로 알려드리겠습니다.