2016-05-28 10 views
0

私はパイプを使用し、次のPythonスクリプト持つRedisの質量のインポートで遊んでいます:質量のインサートは奇妙なエラーで失敗し

mydata = "" 
mydata += "*4\r\n$4\r\nHSET\r\n$%d\r\n%s\r\n$%d\r\n%s\r\n$%d\r\n%s\r\n" % (len('myhash'), 'myhash', len('myfield'), 'myfield', len('myvalue'), 'myvalue') 

print mydata.rstrip() 

それが生成する:配管の

$ python redis_test.py 
*4 
$4 
HSET 
$6 
myhash 
$7 
myfield 
$7 
myvalue 

出力:

$ python redis_test.py | redis-cli -h rnode -n 5 --pipe --pipe-timeout 1 
All data transferred. Waiting for the last reply... 
ERR unknown command '2' 
ERR unknown command '$4' 
ERR wrong number of arguments for 'echo' command 
ERR unknown command '$20' 
ERR unknown command '�˛�ƩA\m���pm��X�[�' 
No replies for 1 seconds: exiting. 
errors: 6, replies: 6 

私はDBにデータを入力するようになっていますが、そのエラーの原因を知りたいのですが?私はそれが最後のCRLFを必要として知らなかった、したがって、この:自分の質問へ

rnode:6379[5]> keys * 
1) "myhash" 
rnode:6379[5]> hgetall myhash 
1) "myfield" 
2) "myvalue" 

答えて

0

回答

print mydata.rstrip() 

になった:

print mydata 

結果:

$ python redis_test.py | redis-cli -h rnode -n 5 --pipe --pipe-timeout 10 
All data transferred. Waiting for the last reply... 
Last reply received from server. 
errors: 0, replies: 1