Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ “Redis质量插入问题”;ERR协议错误:mbulk计数字符串太大;_C++_Redis_Redis Cli_Redis Server - Fatal编程技术网

C++ “Redis质量插入问题”;ERR协议错误:mbulk计数字符串太大;

C++ “Redis质量插入问题”;ERR协议错误:mbulk计数字符串太大;,c++,redis,redis-cli,redis-server,C++,Redis,Redis Cli,Redis Server,更新 我将文件拆分为多个文件,每个文件大约有150万行,没有问题 试图通过管道将大约1500万行SADD和HSET命令正确格式化为Redis 6.0.6,但失败,并显示以下消息: ERR Protocol error: too big mbulk count string 我使用以下命令: echo-e“$(cat load.txt)”| redis cli--管道 我在redis cli中运行dbsize命令,它在整个时间内没有显示任何增加 < >我可以使用我写的格式化应用程序(一个C++应

更新
将文件拆分为多个文件,每个文件大约有150万行,没有问题

试图通过管道将大约1500万行SADD和HSET命令正确格式化为Redis 6.0.6,但失败,并显示以下消息:

ERR Protocol error: too big mbulk count string
我使用以下命令:

echo-e“$(cat load.txt)”| redis cli--管道

我在redis cli中运行dbsize命令,它在整个时间内没有显示任何增加

< >我可以使用我写的格式化应用程序(一个C++应用程序,带有客户端库RediiS Plus Plus),它正确地格式化行,然后使用以下命令写入STD::CUT:

./app | redis-cli --pipe
但是它会立即退出,并且只在某些时候产生错误消息

如果我从load.txt文件中提取大约400000行并将其加载到一个较小的文件中,那么使用echo-e等。。。。很好。问题似乎在于线路太多


有什么建议吗?这不是一个格式化问题。我可以编写我的应用程序,将所有命令写入Redis,但批量插入应该更快,我更喜欢这种方式。

为什么要使用
echo
而不是像文档中那样只使用
cat
?我的猜测是,这种方式不是流式传输输出,而是强制shell读取整个文件,然后将整个文件传递给
redis cli
,这会阻塞较大的大小。如果使用cat将文本行发送到redis,则回车符和新行\r\n格式不正确。Echo允许出于某种原因正确读取它们。我读到bash对此有一个问题,这就是解决方案。好的,但正如我所说的,我认为这是你的问题,所以我建议你找出为什么使用
cat
不起作用,并找到一个不同的解决方案。也许您的
cat
被别名为其他名称,例如
cat-v
(使用
键入cat
来查找)?还有其他方法可以将文件发送到stdout。感谢您的帮助为什么您要使用
echo
而不是像文档中那样仅使用
cat
?我的猜测是,这种方式不是流式传输输出,而是强制shell读取整个文件,然后将整个文件传递给
redis cli
,这会阻塞较大的大小。如果使用cat将文本行发送到redis,则回车符和新行\r\n格式不正确。Echo允许出于某种原因正确读取它们。我读到bash对此有一个问题,这就是解决方案。好的,但正如我所说的,我认为这是你的问题,所以我建议你找出为什么使用
cat
不起作用,并找到一个不同的解决方案。也许您的
cat
被别名为其他名称,例如
cat-v
(使用
键入cat
来查找)?还有其他方法可以将文件发送到stdout。谢谢您的帮助