本篇文章主要内容是用PHP多个进程配合redis的有序集合实现大文件去重,感兴趣的朋友可以学习一下。

1.对一个大文件比如我的文件为

-rw-r--r-- 1 ubuntu ubuntu 9.1G Mar 1 17:53 2018-12-awk-uniq.txt

2.使用split命令切割成10个小文件

split -b 1000m 2018-12-awk-uniq.txt -b 按照字节切割 , 支持单位m和k

3.使用10个php进程读取文件 , 插入redis的有序集合结构中 , 重复的是插不进去的 ,因此可以起到去重的作用

$file=$argv[1];

//守护进程

umask(0); //把文件掩码清0

if (pcntl_fork() != 0){ //是父进程,父进程退出

exit();

}

posix_setsid();//设置新会话组长,脱离终端

if (pcntl_fork() != 0){ //是第一子进程,结束第一子进程

exit();

}

$start=memory_get_usage();

$redis=new Redis();

$redis->connect('127.0.0.1', 6379);

$handle = fopen("./{$file}", 'rb');

while (feof($handle)===false) {

$line=fgets($handle);

$email=str_replace("\n","",$line);

$redis->zAdd('emails', 1, $email);

}

4. redis中查看获取的数据

zcard emails 获取元素个数

取一定范围的元素 , 比如从100000开始 到 100100结束

zrange emails 100000 100100 WITHSCORES

想更高效学习PHP,请关注PHP中文网的PHP视频教程。

php文件内容去重,PHP结合redis实现大文件去重相关推荐

  1. java 按行读取大文件文件内容_Java实现按行读取大文件

    Java实现按行读取大文件 String file = "F:" + File.separator + "a.txt"; FileInputStream fis ...

  2. linux中vi修改文件内容,linux VI模式下批量修改文件内容

    1.         :s/vivian/sky/ 替换当前行第一个 vivian 为 sky :s/vivian/sky/g 替换当前行所有 vivian 为 sky 2.         :n,$ ...

  3. linux dd 截文件,Linux使用dd命令快速生成大文件(转)

    dd命令可以轻易实现创建指定大小的文件,如 dd if=/dev/zero of=test bs=1M count=1000 会生成一个1000M的test文件,文件内容为全0(因从/dev/zero ...

  4. Linux dd命令截取文件,linux使用dd命令快速生成大文件

    dd命令可以轻易实现创建指定大小的文件,如 dd if=/dev/zero of=test bs=1M count=1000 会生成一个1000M的test文件,文件内容为全0(因从/dev/zero ...

  5. kettle将多个文件压缩_如何使用WinRAR将一个大文件压缩成多个小的压缩包

    目录 1.使用WinRAR将一个大文件压缩成多个小的压缩包 2.使用WinRAR将多个小的压缩包,解压/合并成一个大文件 3.结尾 / 在现实生活中,受文件大小的限制,在传输的过程往往出现困难,如:邮 ...

  6. java高效写文件_java如何高效读写10G以上大文件

    有一份10G以上大文本文件,需要替换里面的一些文本信息(每一行都有),如何高效读并替换掉生成新的文件 先分割成多个文件 多个线程操作多个文件,避免两个线程操作同一个文件 按行读文件并按行写入新的文件 ...

  7. 大文件传输有哪些方式可用?大文件传输有哪些方式?

    大文件传输有哪些方式可用?大文件传输有哪些方式?互联网时代,速度决定效率.在企业生产过程中需要进行信息数据交换.搬运.这时就需要进行大文件传输.方方面面的行业都要涉及到大文件传输.例如影视行业需要每天 ...

  8. php读取文件和读取redis,PHP结合redis实现大文件去重

    本篇文章主要内容是用PHP多个进程配合redis的有序集合实现大文件去重,感兴趣的朋友可以学习一下. 1.对一个大文件比如我的文件为 -rw-r--r-- 1 ubuntu ubuntu 9.1G M ...

  9. linux目录下所有文件内容替换,linux替换目录下所有文件中的某字符串

    比如,要将目录/modules下面所有文件中的zhangsan都修改成lisi,这样做: sed -i "s/zhangsan/lisi/g" `grep zhangsan -rl ...

最新文章

  1. 【iOS】日历行程的增删改查(完整)
  2. android qml 菜单,QML - ListView项目,用于显示菜单
  3. [数据库]-----记一次mysql分库的操作(冷热分离)
  4. java 设置不可点击_Java Selenium webdriverwait 解决元素不可点击问题
  5. 腾讯开源业内最大多标签图像数据集,附ResNet-101模型
  6. [python3 - package] lxml
  7. 体验Windows server 2012上安装SQL 2012
  8. html节点替换代码,html之DOM对象replaceChild()方法(子节点替换)功能简介说明
  9. python下载微信公众号文章_Python 抓取微信公众号文章
  10. 2018中国双态运维用户大会于1月13日在京举行
  11. matlab中全局变量的作用域,在simulink中使用全局变量的方法
  12. UI设计网盘资源收集
  13. win7计算机管理找不到文件夹,win7文件夹选项不见了怎么办|win7恢复文件夹选项的方法...
  14. Tomcat tomcatlocalhost 中文乱码
  15. Python——(字符串)假设有一段英文,其中有单词中间的字母“i”误写为“I”,请编写程序进行纠正。
  16. 《游戏学习》| 微信对话模拟生成器源码分析
  17. 【开发工具】【JTAG】JTAG调试实例【三】
  18. 致远互联携手信任度,打造一站式电子合同解决方案
  19. 谷歌有超清实时卫星地图吗?答案是没有
  20. mysql 远程复制_关于mysql的复制

热门文章

  1. 三维CAD发展进入国家规划布局
  2. 使用Java实现alpha-beta剪枝算法(井字棋小游戏)
  3. 印象笔记 for mac怎么截图?mac版Evernote截图技巧
  4. 计算机维修员周记300字,计算机实习周记300字.doc
  5. linux交互式进程初始化失败怎么办,“登录进程初始化失败 交互式登录进程初始化失败”的解决办法...
  6. ib 盈透数据 matlab,请教下怎样$IB盈透里ES的历史数据
  7. 自动发射子弹c语言,C语言代码实现飞机大战
  8. ChatGPT AI绘图Siri快捷指令,根据描述生成图片
  9. erp系统服务器网络怎么设置,erp系统云服务器怎么配置
  10. 离散数学5:二元关系