当前位置: 首页 > 面试题库 >

大量摄入Redis

笪烨
2023-03-14
问题内容

我正在尝试尽快将大量数据加载到Redis中。

我的数据如下所示:

771240491921 SOME;STRING;ABOUT;THIS;LENGTH
345928354912 SOME;STRING;ABOUT;THIS;LENGTH

左侧有一个〜12位数字,右侧有一个可变长度的字符串。键将是左侧的数字,数据将是右侧的字符串。

在我刚装箱的Redis实例中,并带有未压缩的纯文本文件(带有此数据),一分钟我可以得到大约一百万条记录。我需要做大约4,500万,这大约需要45分钟。45分钟太长。

我是否可以进行一些标准的性能调整来进行此类优化?通过在单独的实例之间分片,是否可以获得更好的性能?


问题答案:

最快的方法如下:根据这些数据生成Redis协议。生成Redis协议的文档位于Redis.io网站上,这是一个简单的协议。一旦有了它,只需将其命名为appendonly.log并以仅追加模式启动redis。

您甚至可以执行FLUSHALL命令,最后使用netcat将数据推送到服务器中,将输出重定向到/ dev / null。

这将是超快的,没有等待等待的RTT,只是大量数据的加载。

减少骇人听闻的方式,只需使用流水线每次插入1000次即可。它几乎与生成协议一样快,但是更加干净:)



 类似资料:
  • 问题内容: 我正在考虑使用Redis的协议进行批量插入,如下所述:http : //redis.io/topics/mass-insert 在我忙于编写代码来处理此问题之前,我只是想确保自己清楚什么是Redis要求进行此工作。 上面的链接建议使用大容量插入调用SET操作[SET myKey Value myValue],我需要创建一个命令,该命令可以在文件的多行或单个引号字符串中完成。 假设我不想

  • 问题内容: 这是我在stackoverflow上遇到的第一个问题。亲爱的社区,非常感谢您的综合知识和专业知识! 我是Redis的新手,所以请耐心等待,因为我敢肯定有一个简单的解决方案。 => Redis服务器v = 2.6.14 sha = 00000000:0 malloc = libc位= 64 => redis-cli 2.6.14 我已阅读“如何使用Redis大容量插入?”如何使用Redi

  • 就像有人说的第二种方式更慢,但我不确定,那么哪种方式更好呢?不能使数据库崩溃。

  • 问题内容: 我正在向stdin写入大量数据。 我如何确保它不会阻塞? 我读了一个大字符串并将其写入后,似乎无法解决。 我有大量的文件集,这些文件将被顺序写入stdin(> 1k个文件) 所以发生的事情是我正在运行一个循环 它以某种方式挂在文件号上。400.该文件是带有长字符串的大文件。 我确实怀疑这是一个阻碍性问题。 仅当我从0迭代到1000时才会发生这种情况。但是,如果我要从文件400开始,则不

  • 我创建了一个向MySql数据库插入数百万个值的程序。我读到过有关批插入的文章,它将优化我的程序并使其更快,但当我尝试这样做时,它以同样的方式工作。我没有将每个值插入数据库,而是每次将500个值保存在一个列表中,然后将它们插入一个大循环中,如下所示: 然后我删除列表中的所有值,并再次开始收集500个值。它不应该工作得更好吗? 我的插入代码是: 我有一些问题: 1。为什么当我批量插入时它不能更快地工作

  • 问题内容: 我有一个存储在典型MySQL数据库中的表,并且已经使用java构建了一个小型解析器工具,以解析并构建neo4j数据库。该数据库将具有约4000万个节点,每个节点具有一个或多个边缘(最多可能有10个边缘)。问题来自我必须创建某些节点的方式。有一个用户节点,评论节点和标签节点。用户节点和主题标签节点必须各自唯一。我正在使用以下示例中的代码来确保唯一性: } 我已经考虑过使用批处理插入器,但