使用--pipe进行redis批量导入

 绿林VS逍遥 发布于 2023-02-07 11:47

我正在尝试使用该--pipe功能导入一百万行redis命令.

redis_version:2.8.1

cat file.txt | redis-cli --pipe

这会导致以下错误:

从服务器读取时出错:由对等方重置连接

有谁知道我做错了什么?

file.txt 包含,例如,

lpush name joe
lpush name bob

编辑:我现在看到可能有一种使用管道模式的特殊格式(?) - http://redis.io/topics/protocol

2 个回答
  • 第一点是参数必须是双引号.在这一点上,文档有些误导.

    所以一个有效的语法是:

    lpush "name" "joe"
    lpush "name" "bob"
    

    第二点是每一行必须以a结束,\r\n而不仅仅是by \n.要解决这一问题,您只需使用命令转换文件即可unix2dos

    喜欢 : unix2dos file.txt

    然后您可以使用导入文件 cat file.txt | src/redis-cli --pipe

    这对我有用.

    2023-02-07 11:49 回答
  • 要使用管道模式(也就是大量插入),您必须确实以Redis协议格式直接提供命令.

    相应的Redis协议LPUSH name joe是:

    *3
    $5
    LPUSH
    $4
    name
    $3
    joe
    

    或者作为带引号的字符串:"*3\r\n$5\r\nLPUSH\r\n$4\r\nname\r\n$3\r\njoe\r\n".

    这是您的输入文件必须包含的内容.

    该Redis的文档包括红宝石样本,以帮助您生成的协议:看gen_redis_proto.

    2023-02-07 11:49 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有