如何使用Redis的大量插入?(How to use Redis mass insertion?)

2019-07-03 13:02发布

我读过大量插入在redis.io提供的,但它确实让我感到困惑。 我试图做一个文件,然后使用“猫的data.txt | Redis的-CLI --pipe”插入:

    SET Key0 Value0
    SET Key1 Value1
    SET Key2 Value3

然后,我得到这个:

    All data transferred. Waiting for the last reply...
    ERR wrong number of arguments for 'set' command
    ERR unknown command '$4'
    ERR wrong number of arguments for 'echo' command
    ERR unknown command '$20'

我也试过

    *3<cr><lf>
    $3<cr><lf>
    SET<cr><lf>
    $3<cr><lf>
    key<cr><lf>
    $5<cr><lf>
    value<cr><lf>

然后,我得到这个:ERR协议错误:无效的多批量长度

这真的让我感到困惑。 谁能给我一个简单的例子吗? 非常感谢你。

Answer 1:

这里是:

echo -n '*3\r\n$3\r\nset\r\n$3\r\nkey\r\n$5\r\nvalue\r\n' | ./redis-cli --pipe
All data transferred. Waiting for the last reply...
Last reply received from server.
errors: 0, replies: 1

你的问题很可能来自CR + LF分隔符。 您可以使用-C命令来检查这一点上hexdump都:

echo -n '*3\r\n$3\r\nset\r\n$3\r\nkey\r\n$5\r\nvalue\r\n' | hexdump -C
00000000  2a 33 0d 0a 24 33 0d 0a  73 65 74 0d 0a 24 33 0d  |*3..$3..set..$3.|
00000010  0a 6b 65 79 0a 0d 24 35  0d 0a 76 61 6c 75 65 0d  |.key..$5..value.|
00000020  0a                                                |.|
00000021

此外,您可能要检查你的目标是最近Redis的实例,而不是前1-2版本(不支持“ 统一协议 ”)。

注:以上线路工作正常的zsh。 如果你使用bash,你需要的报价触发ANSI-C报价前添加$:

echo -n $'*3\r\n$3\r\nset\r\n$3\r\nkey\r\n$5\r\nvalue\r\n' | hexdump -C


Answer 2:

我能够与合作SET Key0 Value0形式。

请看看https://stackoverflow.com/a/30511742/2613942

答复是关于LPUSH命令。 它也能正常工作与SET

总之,双引号中的参数

SET "mykey" "myval"

改变从UNIX文件与Windows的格式unix2dos

unix2dos myfile.txt

然后导入使用

cat myfile.txt | src/redis-cli --pipe

这为我工作。



Answer 3:

你可以像下面这样做:

echo -e "$(cat data.txt)" | redis-cli --pipe

我希望可以帮助你!



文章来源: How to use Redis mass insertion?
标签: redis