我正在尝试使用该--pipe功能导入一百万行redis命令.
redis_version:2.8.1
cat file.txt | redis-cli --pipe
这会导致以下错误:
从服务器读取时出错:由对等方重置连接
有谁知道我做错了什么?
file.txt 包含,例如,
lpush name joe
lpush name bob
Run Code Online (Sandbox Code Playgroud)
编辑:我现在看到可能有一种使用管道模式的特殊格式(?) - http://redis.io/topics/protocol
小智 12
第一点是参数必须是双引号.在这一点上,文档有些误导.
所以一个有效的语法是:
lpush "name" "joe"
lpush "name" "bob"
Run Code Online (Sandbox Code Playgroud)
第二点是每一行必须以a结束,\r\n而不仅仅是by \n.要解决这一问题,您只需使用命令转换文件即可unix2dos
喜欢 : unix2dos file.txt
然后您可以使用导入文件 cat file.txt | src/redis-cli --pipe
这对我有用.
要使用管道模式(也就是大量插入),您必须确实以Redis协议格式直接提供命令.
相应的Redis协议LPUSH name joe是:
*3
$5
LPUSH
$4
name
$3
joe
Run Code Online (Sandbox Code Playgroud)
或者作为带引号的字符串:"*3\r\n$5\r\nLPUSH\r\n$4\r\nname\r\n$3\r\njoe\r\n".
这是您的输入文件必须包含的内容.
该Redis的文档包括红宝石样本,以帮助您生成的协议:看gen_redis_proto.
| 归档时间: |
|
| 查看次数: |
13890 次 |
| 最近记录: |