[REDIS] --pipe를 사용하여 대량 가져 오기를 레디 스
REDIS--pipe를 사용하여 대량 가져 오기를 레디 스
나는 --pipe 기능을 사용하여, 레디 스 명령 중 하나 만 개 라인을 가져올 것을 시도하고있다.
redis_version : 2.8.1
고양이 file.txt를 | 레디 스-CLI --pipe
다음과 같은 오류에서이 결과 :
서버에서 오류 읽기 : 피어에 의해 연결 재설정
아무도 내가 잘못 뭘하는지 알고 있나요?
file.txt를 예를 들어, 포함
lpush name joe
lpush name bob
편집 : (?) 지금 파이프 모드를 사용하기위한 특별한 형식이 거기에 아마 참조 - http://redis.io/topics/protocol
해결법
-
==============================
1.당신은 실제로 직접 레디 스 프로토콜 형식으로 명령을 제공해야합니다 (대량 삽입 a.k.a) 파이프 모드를 사용합니다.
당신은 실제로 직접 레디 스 프로토콜 형식으로 명령을 제공해야합니다 (대량 삽입 a.k.a) 파이프 모드를 사용합니다.
LPUSH 이름 조에 대한 해당 레디 스 프로토콜입니다 :
*3 $5 LPUSH $4 name $3 joe
또는 인용 된 문자열 : "* 3 \ 연구 \ n $ (5) \ 연구 \ nLPUSH \ 연구 \ n $ 4 \ 연구 \ nname이 \ 연구 \ n $ 3 \ 연구 \ njoe \ 연구 \ n".
이것은 당신의 입력 파일이 있어야합니다 것입니다.
gen_redis_proto를 참조하십시오 레디 스 문서는 프로토콜을 생성하는 데 도움이되는 루비 샘플이 포함되어 있습니다.
-
==============================
2.첫 번째 포인트는 매개 변수를 두 번 인용해야한다는 것입니다. 문서는 어느 정도이 시점에 오해의 소지가있다.
첫 번째 포인트는 매개 변수를 두 번 인용해야한다는 것입니다. 문서는 어느 정도이 시점에 오해의 소지가있다.
작업 구문은 그래서 :
lpush "name" "joe" lpush "name" "bob"
두번째 점은 각각의 라인이 \ r에 \ n뿐 아니라 의해 \ n으로 종료한다는 것이다. 그 시점 문제를 해결하려면, 당신은 단지 명령 unix2dos를 사용하여 파일을 변환해야
같은 : unix2dos를 file.txt를
그럼 당신은 고양이 file.txt 파일을 사용하여 파일을 가져올 수 있습니다 | SRC / 레디 스-CLI --pipe
이것은 나를 위해 일했다.
-
==============================
3.변환 클라이언트 명령이 직접 레디 스 와이어 프로토콜 메시지에 대한 기존의 도구가 있습니다. 예:
변환 클라이언트 명령이 직접 레디 스 와이어 프로토콜 메시지에 대한 기존의 도구가 있습니다. 예:
레디 스 질량 내-클라이언트에 script.txt | 레디 스-CLI --pipe 옵션
https://golanglibs.com/dig_in/redis-mass https://github.com/almeida/redis-mass
-
==============================
4.가능성의 두 가지 종류가 있습니다.
가능성의 두 가지 종류가 있습니다.
첫 번째 체크 포인트되고 MaxClients의 한계를 초과한다.
당신은 '정보 클라이언트'와 '설정 GET MaxClinets를'명령 레디 스를 사용하여 확인할 수 있습니다.
내 바탕 화면에서 결과는 다음과 같습니다.
127.0.0.1:6379> info clients # Clients connected_clients:2 client_longest_output_list:0 client_biggest_input_buf:0 blocked_clients:0 127.0.0.1:6379> config get maxclients 1) "maxclients" 2) "2"
그리고 난 다음 결과, 파이프 명령을 사용하려고.
[localhost redis-2.8.1]$ cat test.txt | ./src/redis-cli --pipe All data transferred. Waiting for the last reply... Error reading from the server: Connection reset by peer
그 결과는 동일합니다. 당신은 redis.conf 파일을 변경해야합니다.
초 지점은 ulimit를 옵션입니다 확인.
ulimit를 옵션 변화는 루트 권한이 필요합니다. 아래 링크를 확인하십시오.
리눅스에서 어떻게 열린 파일의 수를 변경하는 방법을 제한?
-
==============================
5.레디 스에서 제한 시간 설정은 기본, 당신은 명령 아래를 사용하여 레디 스-CLI하여이 시간 제한 값을 구성 할 필요가 0이기 때문에이 오류가 발생합니다 :
레디 스에서 제한 시간 설정은 기본, 당신은 명령 아래를 사용하여 레디 스-CLI하여이 시간 제한 값을 구성 할 필요가 0이기 때문에이 오류가 발생합니다 :
레디 스 서버에 연결하려면 : 레디 스-CLI -h -p -a
구성 제한 시간 값을 보려면 : 이 명령 줄 : 설정 GET timemout는 레디 스 서버에 구성된 시간 제한 값이 무엇인지보기 위해 작동합니다.
레디 스 제한 시간 설정 새 값 : 이 명령 줄 : 120 시간 제한 설정 세트는 2 분으로 제한 시간을 설정합니다. 그래서, 당신은 너무 오래 당신의 실행의 필요성을 레디 스 제한 시간을 설정해야합니다.
나는이 답변이 도움이되기를 바랍니다. CYU!
-
==============================
6.당신은 레디 스에 파일의 데이터를 가져 오려면 다음 명령을 사용할 수 있습니다
당신은 레디 스에 파일의 데이터를 가져 오려면 다음 명령을 사용할 수 있습니다
cat file.txt | xargs -L1 redis-cli
from https://stackoverflow.com/questions/20864505/redis-bulk-import-using-pipe by cc-by-sa and MIT license
'REDIS' 카테고리의 다른 글
[REDIS] 레디 스 만료 작업을하지 않습니다 (0) | 2020.01.06 |
---|---|
[REDIS] PHP 애플리케이션에서 페이지 요청 데이터 로깅의 확장 방법은? (0) | 2020.01.06 |
[REDIS] Laravel 5.2 - 자신의 모든 장치에서 사용자를 로그 아웃하는 방법 (0) | 2020.01.06 |
[REDIS] 를 CentOS에 레디 스의 여러 인스턴스를 실행 (0) | 2020.01.06 |
[REDIS] 레디 스 해시의 키에 여러 값을 추가 할 수있는 쿼리를 작성? (0) | 2020.01.06 |