首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从MySQL获取大量数据。将其插入Redis缓存中。无法增加PHP内存限制

从MySQL获取大量数据。将其插入Redis缓存中。无法增加PHP内存限制
EN

Stack Overflow用户
提问于 2016-05-15 18:51:24
回答 1查看 924关注 0票数 1

我必须提取80万行(它是dev环境,实际上可以是1行,甚至1.5行)。第二步是将这些内容作为序列化数据插入到Redis缓存中。

我的问题是:

  1. 允许的X字节内存大小已经耗尽,但是..。关键是我不能改变它。
  2. 我想,我可以从MySQL DB中逐个获取数据。但是,第二步是有问题的。到目前为止,我习惯于以String类型(带有MySQL数据的数组的序列化php数组)存储Redis中的数据。到目前为止,我还不知道如何正确地追加获取数据的每个部分。(获取序列化数据,取消序列化数据,然后追加数据的新部分,然后再次序列化它就是.愚蠢的)。

你有过大型数据操作的经验吗?我不知道该怎么处理。

请:)

诚挚的问候。

EN

回答 1

Stack Overflow用户

发布于 2016-06-13 08:40:18

在您的示例中,我会将您生成的内容作为redis SET命令放在文件中,然后使用redis-cli -管道执行该文件,在下面的链接中读取您的redis混乱插入数据文件的外观:

红星杂乱插入

代码语言:javascript
复制
<?php
while ($line = mysqli_fetch_assoc($result)) {
  $data['data'] = $line['somekey']; // here generate the desired data
  $data['key'] = 'thekey'; // make the data key
  $redisCommnand = 'SET '.$data['key'].' '.$data['data']; // here you create the redis insert command line someDataKey
  file_put_contents('/tmp/data.txt', $redisCommand, FILE_APPEND);// appending the command to redis command file
}


// exec command to run the file
exec('cat data.txt | redis-cli --pipe');
// consider removing the data.txt file
// unlink('/tmp/data.txt');
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37242362

复制
相关文章

相似问题

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