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。谢谢您的帮助