[REDIS] 어떻게 레디 스 ''DUMP`와`RESTORE` (오프라인)을 사용 하는가?
REDIS어떻게 레디 스 ''DUMP`와`RESTORE` (오프라인)을 사용 하는가?
나는 파일 (또는 파이프)로 레디 스의 DUMP 명령, 리디렉션을 시도했지만이 오류를보고 복원
$ redis-cli dump test > /tmp/test.dump
$ cat /tmp/test.dump | redis-cli -x restore test1 0
(error) ERR DUMP payload version or checksum are wrong
$ redis-cli dump test | redis-cli -x restore test1 0
(error) ERR DUMP payload version or checksum are wrong
나는 MIGRATE 온라인이 작업을 수행 할 수 있지만, MIGRATE는 원래 서버에서 해당 키를 삭제하는 것이 알고, 나는 내 레디 스 공용 인터넷에 노출하고 싶지 않아요.
이 예를 들어 일부 타사 옵션, 레디 스-RDB-도구가 있지만, 모든 후, 정확히 어떻게 DUMP을하고 작업을 복원?
해결법
-
==============================
1.직렬화 형식은 (는 RDB 덤프에 사용 된 것과 같은 하나) 바이너리이기 때문에 덤프 / 복구 명령은 정말, 명령 줄에서 사용할 수 있도록 설계되어 있지 않습니다. 그것은 쉘 (이하 "인쇄"형식을 사용하는 경우에도) 해당 문자를 해석하는 경향이 있기 때문에 불편합니다.
직렬화 형식은 (는 RDB 덤프에 사용 된 것과 같은 하나) 바이너리이기 때문에 덤프 / 복구 명령은 정말, 명령 줄에서 사용할 수 있도록 설계되어 있지 않습니다. 그것은 쉘 (이하 "인쇄"형식을 사용하는 경우에도) 해당 문자를 해석하는 경향이 있기 때문에 불편합니다.
여기에 "인쇄"형식은 다음과 같습니다
$ redis-cli lpush test 1 2 3 4 5 (integer) 5 $ redis-cli dump test "\n\x15\x15\x00\x00\x00\x12\x00\x00\x00\x05\x00\x00\xf6\x02\xf5\x02\xf4\x02\xf3\x02\xf2\xff\x06\x00\x1c\x8a\xda\x0e}\xcb\xe1."
은 "인쇄"형식은 정말 실제 데이터를 기대 -x 옵션에 대한 입력으로 사용할 수 없습니다. 이 레디 스-CLI의 잘못된 동작입니다.
그러나, 원시 포맷을 취득 할 수있는 쉬운 방법이있다 :
$ redis-cli --raw dump test | hexdump -C 00000000 0a 15 15 00 00 00 12 00 00 00 05 00 00 f6 02 f5 |................| 00000010 02 f4 02 f3 02 f2 ff 06 00 1c 8a da 0e 7d cb e1 |.............}..| 00000020 2e 0a |..|
마지막 문자가 잘못 때문에 지금, 그것은는에서 --raw 덤프의 결과가 복원 -x 직접 파이프 할 수 없습니다. --raw 및 인쇄 덤프의 출력을 비교. 당신은 --raw 옵션은 마지막에 추가 \ n을 추가 알 수 있습니다. 원시 옵션은 100 % 원료입니다 ;-)
이 여분의 문자는 데이터가 -x 옵션으로 처리 할 수 있습니다 전에 제거해야합니다. 마지막으로,에서 덤프의 출력이 복원 파이프 (GNU / 리눅스 시스템에 대한) 정확한 명령은 다음과 같습니다
$ redis-cli --raw dump test | head -c-1 | redis-cli -x restore test1 0 OK
이것은 꽤 없습니다. 나는 대부분의 사람들이 펄 / 파이썬 / 루비 스크립트가 아니라 같은 작업을 수행 할 수있는 쉘의 의존 할 것으로 예상된다.
from https://stackoverflow.com/questions/16127682/how-to-use-redis-dump-and-restore-offline by cc-by-sa and MIT license
'REDIS' 카테고리의 다른 글
[REDIS] 어떤 장치는 레디 스 CPU 사용량을 표시하는 데 사용됩니다 (0) | 2020.01.06 |
---|---|
[REDIS] Node.js를 통해 RedisToGo에 연결 (0) | 2020.01.06 |
[REDIS] 센티넬로 Jedis 예 구함 [폐쇄] (0) | 2020.01.06 |
[REDIS] 해야 내가 사용은 바이너리 많은 수의 파일을 저장하기 위해 레디 스? [닫은] (0) | 2020.01.06 |
[REDIS] 레디 스 만료 작업을하지 않습니다 (0) | 2020.01.06 |