详解PHP多个进程配合redis的有序集合实现大文件去重


Posted in PHP onMarch 06, 2019

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

详解PHP多个进程配合redis的有序集合实现大文件去重

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

<?php
 
$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);
}

详解PHP多个进程配合redis的有序集合实现大文件去重

4. redis中查看获取的数据

zcard emails 获取元素个数

详解PHP多个进程配合redis的有序集合实现大文件去重

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

zrange emails 100000 100100 WITHSCORES

以上所述是小编给大家介绍的PHP多个进程配合redis的有序集合实现大文件去重详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
使用数据库保存session的方法
Oct 09 PHP
PHP PDO函数库详解
Apr 27 PHP
php中使用Akismet防止垃圾评论的代码
Jun 10 PHP
Windows下部署Apache+PHP+MySQL运行环境实战
Aug 31 PHP
PHP中is_file不能替代file_exists的理由
Mar 04 PHP
thinkphp模板输出技巧汇总
Nov 24 PHP
Yii获取当前url和域名的方法
Jun 08 PHP
PHP实现抓取迅雷VIP账号的方法
Jul 30 PHP
PHP后期静态绑定实例浅析
Dec 21 PHP
PHP删除字符串中非字母数字字符方法总结
Jan 20 PHP
php实现QQ小程序发送模板消息功能
Sep 18 PHP
Apache+PHP+MySQL搭建PHP开发环境图文教程
Aug 06 PHP
一次因composer错误使用引发的问题与解决
Mar 06 #PHP
利用PHP如何统计Nginx日志的User Agent数据
Mar 06 #PHP
浅谈php://filter的妙用
Mar 05 #PHP
PHP实现微信小程序用户授权的工具类示例
Mar 05 #PHP
统计PHP目录中的文件数方法
Mar 05 #PHP
PHP常见字符串操作函数与用法总结
Mar 04 #PHP
php+Ajax处理xml与json格式数据的方法示例
Mar 04 #PHP
You might like
如何在PHP中使用正则表达式进行查找替换
2013/06/13 PHP
PHP传参之传值与传址的区别
2015/04/24 PHP
php自定义hash函数实例
2015/05/05 PHP
php实现微信扫码自动登陆与注册功能
2016/09/22 PHP
PHP设置images目录不充许http访问的方法
2016/11/01 PHP
Laravel5.* 打印出执行的sql语句的方法
2017/07/24 PHP
javascript 日历提醒系统( 兼容所有浏览器 )
2009/04/07 Javascript
基于Jquery的文字滚动跑马灯插件(一个页面多个滚动区)
2010/07/26 Javascript
浅谈 javascript 事件处理
2015/01/04 Javascript
AngularJS 入门教程之事件处理器详解
2016/08/19 Javascript
基于KO+BootStrap+MVC实现的分页控件代码分享
2016/11/07 Javascript
Vue+webpack项目基础配置教程
2018/02/12 Javascript
详解Ant Design of React的安装和使用方法
2018/12/27 Javascript
使用vue-cli3 创建vue项目并配置VS Code 自动代码格式化 vue语法高亮问题
2019/05/14 Javascript
javascript异步处理与Jquery deferred对象用法总结
2019/06/04 jQuery
JavaScript中BOM对象原理与用法分析
2019/07/09 Javascript
ElementUI 修改默认样式的几种办法(小结)
2020/07/29 Javascript
python3+PyQt5实现柱状图
2018/04/24 Python
python实现requests发送/上传多个文件的示例
2018/06/04 Python
python实现屏保计时器的示例代码
2018/08/08 Python
python隐藏终端执行cmd命令的方法
2019/06/24 Python
Python使用Opencv实现图像特征检测与匹配的方法
2019/10/30 Python
Python3.5 win10环境下导入kera/tensorflow报错的解决方法
2019/12/19 Python
Rossignol金鸡美国官网:始于1907年法国百年雪具品牌
2019/03/06 全球购物
迪斯尼假期(欧洲、中东及非洲):Disney Holidays EMEA
2021/02/15 全球购物
建筑工程专业毕业生自荐信
2013/10/19 职场文书
社区志愿者心得体会
2014/01/03 职场文书
实习生的自我评价
2014/01/08 职场文书
班级道德讲堂实施方案
2014/02/24 职场文书
医院领导班子查摆问题对照检查材料思想汇报
2014/10/08 职场文书
贷款承诺书
2015/01/20 职场文书
副总经理岗位职责范本
2015/04/08 职场文书
2016廉政教育学习心得体会
2016/01/25 职场文书
2019年最新七夕唯美祝福语(60条)
2019/07/22 职场文书
JS中一些高效的魔法运算符总结
2021/05/06 Javascript
基于Redis的List实现特价商品列表功能
2021/08/30 Redis