2013-11-22 50 views
1

這是通過一個轉換器的NodeJS文件我管的hexdump都到redis的:Redis大量插入幻影條目?

[email protected] ~/scripts $ cat example.txt | node redisProtocol.js | hexdump -C 

00000000 2a 39 0d 0a 24 34 0d 0a 53 41 44 44 0d 0a 24 37 |*9..$4..SADD..$7| 
00000010 0d 0a 64 6f 6d 61 69 6e 73 0d 0a 24 31 34 0d 0a |..domains..$14..| 
00000020 77 77 77 2e 72 65 64 64 69 74 2e 63 6f 6d 0d 0a |www.reddit.com..| 
00000030 24 34 0d 0a 53 41 44 44 0d 0a 24 37 0d 0a 64 6f |$4..SADD..$7..do| 
00000040 6d 61 69 6e 73 0d 0a 24 31 33 0d 0a 77 77 77 2e |mains..$13..www.| 
00000050 34 63 68 61 6e 2e 6f 72 67 0d 0a 24 34 0d 0a 53 |4chan.org..$4..S| 
00000060 41 44 44 0d 0a 24 37 0d 0a 64 6f 6d 61 69 6e 73 |ADD..$7..domains| 
00000070 0d 0a 24 31 36 0d 0a 77 77 77 2e 66 61 63 65 62 |..$16..www.faceb| 
00000080 6f 6f 6b 2e 63 6f 6d 0d 0a      |ook.com..| 
00000089 

輸送至redis-cli --pipe當我得到:

All data transferred. Waiting for the last reply... 
Last reply received from server. 
errors: 0, replies: 1 

這是很好的。
現在尋找到Redis的DB執行smembers domains我得到:

redis 127.0.0.1:6379> smembers domains 
1) "domains" 
2) "SADD" 
3) "www.reddit.com" 
4) "www.4chan.org" 
5) "www.facebook.com" 

在哪裏附加項「域」和「SADD」從何而來? hexdump看起來不錯,不是嗎?

使用redis版本redis-cli 2.6.7。非常感謝您提供的任何幫助。
最好,
亞歷克斯

回答

3

不,看起來不好。我想你想到hexdump都表示:

SADD domains www.reddit.com 
SADD domains www.4chan.org 
SADD domains www.facebook.com 

然而,它開始由「* 9」,這意味着Redis的期待與九個參數的命令。所以Redis進程:

SADD domains www.reddit.com SADD domains www.4chan.org SADD domains www.facebook.com 

它給出了你的結果。

您需要用你的流中執行3個命令,他們每個人開始* 3,或含有隻有一個命令:

SADD domains www.reddit.com www.4chan.org www.facebook.com 

開始* 5