2012-11-02 11 views
15

私はredis.ioでmass-insertを提供していますが、本当に私を混乱させました。私は、ファイルを作ってみましたし、 "猫data.txtを| Redisの-CLI --pipe" を使用挿入するには: Redis mass insertionの使い方は?

All data transferred. Waiting for the last reply... 
    ERR wrong number of arguments for 'set' command 
    ERR unknown command '$4' 
    ERR wrong number of arguments for 'echo' command 
    ERR unknown command '$20' 

SET Key0 Value0 
    SET Key1 Value1 
    SET Key2 Value3 

をそれから私はこれを得ました 私も試しました

*3<cr><lf> 
    $3<cr><lf> 
    SET<cr><lf> 
    $3<cr><lf> 
    key<cr><lf> 
    $5<cr><lf> 
    value<cr><lf> 
それは本当に私が混乱して作る無効なマルチバルク長

:ERRプロトコルエラー:0

は、その後、私はこれを得ました。誰か私に簡単な例を教えてもらえますか?どうもありがとうございました。

答えて

7

はここにある:

echo -n '*3\r\n$3\r\nset\r\n$3\r\nkey\r\n$5\r\nvalue\r\n' | ./redis-cli --pipe 
All data transferred. Waiting for the last reply... 
Last reply received from server. 
errors: 0, replies: 1 

あなたの問題は、おそらくCR + LFセパレータから来ています。また、あなたがあなたの目標を確認したいこと」をサポートしていません前の1-2バージョン(最近のRedisのインスタンスではなく

echo -n '*3\r\n$3\r\nset\r\n$3\r\nkey\r\n$5\r\nvalue\r\n' | hexdump -C 
00000000 2a 33 0d 0a 24 33 0d 0a 73 65 74 0d 0a 24 33 0d |*3..$3..set..$3.| 
00000010 0a 6b 65 79 0a 0d 24 35 0d 0a 76 61 6c 75 65 0d |.key..$5..value.| 
00000020 0a            |.| 
00000021 

:あなたはこの点を確認するために-Cコマンドhexdumpに対してを使用することができますunified protocol ")。

注:上記の行はzshで正常に動作します。もしbashを使用する場合は、引用符は、ANSI-C引用をトリガする前に$を追加する必要があります。

echo -n $'*3\r\n$3\r\nset\r\n$3\r\nkey\r\n$5\r\nvalue\r\n' | hexdump -C 
+0

私は2.4.14バージョンを使用しています。これはプロトコルをサポートします。$ 3 \ r \ n $ 3 \ r \ nセット\ r \ n $ 3 \ r \ nキー\ n \ r $ 5 \ r \ n値\ r \ n ' ./src/redis-cli --pipe すべてのデータが転送されました。最後の応答を待っています... ERRプロトコルエラー:無効マルチバイト長 – wyp

+0

ヘックスダンプ-Cでは、| * 3 \ r \ n $ 3 \ r \ nset \ $ 3を設定します。あなたの答えをありがとう。 – wyp

+0

これは、\ r \ nがあなたのシェルによって正しく解釈されないことを意味します - あなたはbashや他のシェルを使用していますか?私はこの出力を得るためにzshを使用します。 –

3

あなたはこのようにそれを行うことができます。

echo -e "$(cat data.txt)" | redis-cli --pipe 

私はあなたを助け願っています!

4

私はSET Key0 Value0フォームで作業できました。

返信がLPUSHコマンドについてですhttps://stackoverflow.com/a/30511742/2613942

で見てください。また、SETで正常に動作します。

二重引用符のパラメータ

SET "mykey" "myval" 

変更unix2dosとUNIXからWindowsへのファイルの形式、要約すると:

unix2dos myfile.txt 

が続い

cat myfile.txt | src/redis-cli --pipe

を使用してインポートします

それは私のために働いた。

関連する問題