[REDIS] MIGRATE를 사용하여 레디 스 데이터베이스에있는 모든 키를 복사
REDISMIGRATE를 사용하여 레디 스 데이터베이스에있는 모든 키를 복사
이 마이그레이션을 사용하여 다른 원격 인스턴스 한 레디 스 인스턴스에서 모든 키를 복사 할 수 있습니까? 나는 복사, 운없이 교체 및 키 시도했습니다. 때마다 나는 NOKEY 응답을 얻을. 나는 그것이 작동하는 하나의 키를 사용하여 마이그레이션 명령 중 하나를 사용하는 경우.
예를 들면 :
MIGRATE my.redis 6379 "*" 0 5000 REPLACE // NOKEY
MIGRATE my.redis 6379 "*" 0 5000 COPY // NOKEY
MIGRATE my.redis 6379 "" 0 5000 KEYS * // NOKEY
MIGRATE my.redis 6379 "" 0 5000 KEYS test // OK
해결법
-
==============================
1.이것은 내가 의견을 게시 할 수 없습니다 오전부터 @ezain에서 제공하는 대답에 개선이다. 이 명령은 키의 일괄 처리를위한 올바른 레디 스 구문을 사용하지만, xargs를의 인수는 명령에서 호출되는 결과를 단 한 번 모두를 가진 그것보다 완료하는 데 더 많은 시간이 걸릴 것이다 수단에 포함 된 키 (대신 모든 키에 대해 한 번 필수적이다). 다음은 모든 경우에 훨씬 더 빨리 될 것입니다 :
이것은 내가 의견을 게시 할 수 없습니다 오전부터 @ezain에서 제공하는 대답에 개선이다. 이 명령은 키의 일괄 처리를위한 올바른 레디 스 구문을 사용하지만, xargs를의 인수는 명령에서 호출되는 결과를 단 한 번 모두를 가진 그것보다 완료하는 데 더 많은 시간이 걸릴 것이다 수단에 포함 된 키 (대신 모든 키에 대해 한 번 필수적이다). 다음은 모든 경우에 훨씬 더 빨리 될 것입니다 :
레디 스-CLI --raw KEYS '*'| xargs를의 레디 스-CLI MIGRATE "는"0 5000 키 6379를 my.redis
목적지 인 경우 암호로 보호 :
-
==============================
2.쉘에서 실행하려고
쉘에서 실행하려고
redis-cli keys '*' | xargs -I '{}' redis-cli migrate my.redis 6379 "" 0 5000 KEYS '{}'
-
==============================
3.이 키를 명령에 레디 스 잠금을 피하기 위해 대신 키의 --scan 사용하는 것이 좋습니다 키의 많은 큰 DB를 들면 :
이 키를 명령에 레디 스 잠금을 피하기 위해 대신 키의 --scan 사용하는 것이 좋습니다 키의 많은 큰 DB를 들면 :
redis-cli --scan | xargs redis-cli MIGRATE my.redis 6379 "" 0 5000 KEYS
정말 문제와 관련,하지만 경우에 사람이 필요하지 않습니다 : 레디 스 3.0 전에 암호로 MIGRATE을 지원하지 않습니다. 3.0 후에는 권한을 확인하는 AUTH 매개 변수를 추가 할 수 있습니다 :
MIGRATE 192.168.0.33 6379 "" 0 5000 AUTH mypassword KEYS user:{info}:age
-
==============================
4.나는 옹호하는이 사용하지 않는,하지만 난이 모든 예제를 시도하고, 많은 다른 사람과 작동하지 않았다. 그래서 어쩌면이 붙어 있습니다 다른 사람 도움이 될 것입니다, PHP에서 나 자신을하고 끝났다.
나는 옹호하는이 사용하지 않는,하지만 난이 모든 예제를 시도하고, 많은 다른 사람과 작동하지 않았다. 그래서 어쩌면이 붙어 있습니다 다른 사람 도움이 될 것입니다, PHP에서 나 자신을하고 끝났다.
<?php $redisSource = new Redis(); $redisSource->connect('1.2.3.4', 6379); $redisSource->auth('password'); $redisTarget = new Redis(); $redisTarget->connect('127.0.0.1', 6379); foreach($redisSource->keys('*') as $key) { $redisTarget->set($key, $redisSource->get($key)); }
from https://stackoverflow.com/questions/37166947/copying-all-keys-in-redis-database-using-migrate by cc-by-sa and MIT license
'REDIS' 카테고리의 다른 글
[REDIS] 최대 클라이언트에게 Heroku와 Redistogo 나노에 도달 (0) | 2020.01.22 |
---|---|
[REDIS] phpredis 확장 'redis.so'로드 할 수없는 작업을 수행 (0) | 2020.01.22 |
[REDIS] 레디 스는 - 수동으로 마스터 슬레이브 추진 (0) | 2020.01.22 |
[REDIS] 파이썬 레디 스의 상호 작용 (0) | 2020.01.22 |
[REDIS] 파이썬에서 레디 스에 전체 순서를 밀어 [중복] (0) | 2020.01.22 |