복붙노트

[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. ==============================

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

    2.첫 번째 포인트는 매개 변수를 두 번 인용해야한다는 것입니다. 문서는 어느 정도이 시점에 오해의 소지가있다.

    첫 번째 포인트는 매개 변수를 두 번 인용해야한다는 것입니다. 문서는 어느 정도이 시점에 오해의 소지가있다.

    작업 구문은 그래서 :

    lpush "name" "joe"
    lpush "name" "bob"
    

    두번째 점은 각각의 라인이 \ r에 \ n뿐 아니라 의해 \ n으로 종료한다는 것이다. 그 시점 문제를 해결하려면, 당신은 단지 명령 unix2dos를 사용하여 파일을 변환해야

    같은 : unix2dos를 file.txt를

    그럼 당신은 고양이 file.txt 파일을 사용하여 파일을 가져올 수 있습니다 | SRC / 레디 스-CLI --pipe

    이것은 나를 위해 일했다.

  3. ==============================

    3.변환 클라이언트 명령이 직접 레디 스 와이어 프로토콜 메시지에 대한 기존의 도구가 있습니다. 예:

    변환 클라이언트 명령이 직접 레디 스 와이어 프로토콜 메시지에 대한 기존의 도구가 있습니다. 예:

    레디 스 질량 내-클라이언트에 script.txt | 레디 스-CLI --pipe 옵션

    https://golanglibs.com/dig_in/redis-mass https://github.com/almeida/redis-mass

  4. ==============================

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

    5.레디 스에서 제한 시간 설정은 기본, 당신은 명령 아래를 사용하여 레디 스-CLI하여이 시간 제한 값을 구성 할 필요가 0이기 때문에이 오류가 발생합니다 :

    레디 스에서 제한 시간 설정은 기본, 당신은 명령 아래를 사용하여 레디 스-CLI하여이 시간 제한 값을 구성 할 필요가 0이기 때문에이 오류가 발생합니다 :

    레디 스 서버에 연결하려면 : 레디 스-CLI -h -p -a

    구성 제한 시간 값을 보려면 : 이 명령 줄 : 설정 GET timemout는 레디 스 서버에 구성된 시간 제한 값이 무엇인지보기 위해 작동합니다.

    레디 스 제한 시간 설정 새 값 : 이 명령 줄 : 120 시간 제한 설정 세트는 2 분으로 제한 시간을 설정합니다. 그래서, 당신은 너무 오래 당신의 실행의 필요성을 레디 스 제한 시간을 설정해야합니다.

    나는이 답변이 도움이되기를 바랍니다. CYU!

  6. ==============================

    6.당신은 레디 스에 파일의 데이터를 가져 오려면 다음 명령을 사용할 수 있습니다

    당신은 레디 스에 파일의 데이터를 가져 오려면 다음 명령을 사용할 수 있습니다

    cat file.txt | xargs  -L1 redis-cli 
    
  7. from https://stackoverflow.com/questions/20864505/redis-bulk-import-using-pipe by cc-by-sa and MIT license