로컬에 3.0.2 (6379포트) 레디스를 실행하고,
2.8.19(6378포트) 레디스를 실행했다. 총 로컬에 2개의 로컬 redis를 실행했다.
MIGRATE 커맨드는 주어진 키를 수신할 레디스 서버로 옮긴다.
원자적 커맨드라서, 키를 옮길 때는 두 레디스 서버는 블럭된다. 내부적으로 dump, restore, del 커맨드의 조합 명령어이다.
6379 포트의 레디스에 특정 키를 저장하고,
6378 포트의 레디스에 해당 키를 MIGRATE 커맨드로 복사하는 예제이다.
6379 포트의 레디스의 redis-client
127.0.0.1:6379> set b 1
OK
127.0.0.1:6379> MIGRATE 127.0.0.1 6378 b 0 1000
OK
127.0.0.1:6379> set a 10
OK
127.0.0.1:6379> MIGRATE 127.0.0.1 6378 a 0 1000 COPY
OK
6378 포트의 레디스의 redis-client에서 a,b를 확인하면 복사된 것을 확인할 수 있다.
127.0.0.1:6378> get b
"1"
127.0.0.1:6378> get a
"10"
127.0.0.1:6378> TTL a
(integer) -1
6379 포트의 레디스의 redis-client(3.0.2)에서 하위 버전의 redis(2.8.19)로는 MIGRATE.. COPY는 동작되지만, REPLACE는 동작되지 않는다.
127.0.0.1:6379> MIGRATE 127.0.0.1 6378 a 0 1000 REPLACE
(error) ERR Target instance replied with error: ERR wrong number of arguments for 'restore' command
그리고, 목적 DB에 동일 키가 있으면 에러가 발생한다.
127.0.0.1:6379> MIGRATE 127.0.0.1 6378 a 0 1000 COPY
(error) ERR Target instance replied with error: ERR Target key name is busy.
원본 DB에 키가 없어도 에러가 발생한다.
127.0.0.1:6379> MIGRATE 127.0.0.1 6378 b 0 1000
NOKEY
'Redis' 카테고리의 다른 글
[Redis] 레디스 테스트후, 메모리 측정하기 (redis used memory) (0) | 2016.01.23 |
---|---|
[redis] 레디스 데이터 타입, 값에 따른 인코딩 값 확인하기 - OBJECT ENCODING (0) | 2016.01.15 |
[redis] PERSIST 커맨드 (0) | 2016.01.14 |
[redis] SET key value [EX seconds|PX milliseconds] [NX|XX] (0) | 2016.01.14 |
[Redis] TTL 커맨드와 PTTL 커맨드 (0) | 2016.01.14 |