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
Redis质量插入_Redis - Fatal编程技术网

Redis质量插入

Redis质量插入,redis,Redis,我正在考虑使用Redis的协议来进行大规模插入,如下所述:在我忙于编写代码来处理这个问题之前,我只想确保我清楚Redis需要什么来完成这项工作 上面的链接表明,要使用大规模插入调用SET操作[SET myKey Value myValue],我需要创建一个命令,该命令可以在文件中的几行或单个带引号的字符串中完成 假设我不想使用SET命令,我想使用SADD命令添加到集合中。这里的内容对引用字符串格式有效吗 “*4\r\n$4\r\n添加\r\n$2\r\n80\r\n$5\r\n1,2,34\r\

我正在考虑使用Redis的协议来进行大规模插入,如下所述:在我忙于编写代码来处理这个问题之前,我只想确保我清楚Redis需要什么来完成这项工作

上面的链接表明,要使用大规模插入调用SET操作[SET myKey Value myValue],我需要创建一个命令,该命令可以在文件中的几行或单个带引号的字符串中完成

假设我不想使用SET命令,我想使用SADD命令添加到集合中。这里的内容对引用字符串格式有效吗

“*4\r\n$4\r\n添加\r\n$2\r\n80\r\n$5\r\n1,2,34\r\n”

基本上我存储的是一个键:80,其值为1,2,34

最后,我希望该功能能够做到以下几点:

Key     Value
80      1,2,34
90      4,8,34
获取两组的交点(烧结点)和/或并集(SUNION)。i、 e.烧结矿=34或SUNION=1,2,4,8,34


非常感谢您提供的任何有用信息。我只是想确保我在这条路上走的是正确的道路。

我想说,你走的是过早优化的道路(这通常不是最好的)

任何带有支持管道的Redis客户端的脚本语言都应该能够将至少50K个命令/秒推送到Redis服务器。代码很简单,无需手动编码Redis协议。诚然,大规模插入技巧更快,但您真的需要它吗

现在,如果您仍然想坚持使用massiveinsert,则需要对适当的Redis命令进行编码。由于以下几个原因,您提供的示例是错误的:

  • 参数的数量错误(示例应以*3开头)

  • 最后一个参数的长度错误(1,2,34长度为6字节,而不是5字节)

  • 在SADD命令中,集合的每个项都需要一个参数(即对于Redis 1,2,34,将是单个项,而不是三个)

正确的命令应该是这样的:

"*5\r\n$4\r\nSADD\r\n$2\r\n80\r\n$1\r\n1\r\n$1\r\n2\r\n$2\r\n34\r\n"
Redis协议描述如下:

很好的解释。这实际上增加了清晰度和文档中未提供的缺失信息。此外,仅供参考,我需要插入数亿个这样的数据,并且数据不会经常更新,这就是为什么我对这条路线感兴趣,而不是使用客户端将其导入。