首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >红质插入

红质插入
EN

Stack Overflow用户
提问于 2013-09-18 11:08:08
回答 1查看 3.3K关注 0票数 5

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

上面的链接建议,要使用大量插入调用SET操作集myKey值myValue,我需要创建一个命令,该命令可以在文件中的几行或单个引号字符串中执行。

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

"*4\r\n$4\r\nSADD\r\n$2\r\n80\r\n$5\r\n1,2,34\r\n“

从本质上说,我存储的是一个关键: 80,它的值是1,2,34

最后,我想要做的是:

代码语言:javascript
复制
Key     Value
80      1,2,34
90      4,8,34

得到这两组的相交(烧结)和/或联合(SUNION)。即烧结矿= 34或亚硝= 1,2,4,8,34

如果您能提供任何有用的信息,我们将不胜感激。我只想确定我走上了正确的道路。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-18 12:28:01

我想说的是,您正在进行过早的优化(这通常不是最好的)。

任何带有Redis客户端支持流水线的脚本语言都应该能够将至少50K命令/s推送到Redis服务器。代码将是直接的,不需要手动编码Redis协议。当然,大规模的插入技巧更快,但你真的需要它吗?

现在,如果您仍然希望坚持大量插入,则需要对一个正确的Redis命令进行编码。您提供的示例有几个原因是错误的:

  • 参数的数量是错误的(您的示例应该从*3开始)
  • 最后一个参数的长度是错误的(1,2,34长度是6个字节,而不是5)。
  • 在SADD命令中,您需要一个参数(对于Redis 1,2,34将是单个项,而不是3个)。

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

代码语言:javascript
复制
"*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协议:http://redis.io/topics/protocol

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18870623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档