Redis大量插入幽灵条目?

时间:2013-11-22 12:17:43

标签: redis

这是我通过nodejs转换器管道进入redis的文件的hexdump:

me@myself ~/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

哪个好。
现在查看执行smembers domains的redis数据库,我得到:

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。非常感谢您提供的任何帮助 最好,
亚历

1 个答案:

答案 0 :(得分:3)

不,它看起来不太好。我想你期望hexdump代表:

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

但是,它以'* 9'开头,这意味着Redis需要一个带有9个参数的命令。所以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开始