详解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 相关文章推荐
PHP 获取目录下的图片并随机显示的代码
Dec 28 PHP
解析在zend Farmework下如何创立一个FORM表单
Jun 28 PHP
如何使用PHP实现javascript的escape和unescape函数
Jun 29 PHP
如何在Ubuntu下启动Apache的Rewrite功能
Jul 05 PHP
PHP实现今天是星期几的几种写法
Sep 26 PHP
PHP遍历并打印指定目录下所有文件实例
Feb 10 PHP
PHP添加Xdebug扩展的方法
Feb 12 PHP
Yii使用技巧大汇总
Dec 29 PHP
LINUX下PHP程序实现WORD文件转化为PDF文件的方法
May 13 PHP
PHP实现冒泡排序的简单实例
May 26 PHP
PHP读取XML文件的方法实例总结【DOMDocument及simplexml方法】
Sep 10 PHP
详细分析PHP 命名空间(namespace)
Jun 30 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(视频)Http下载
2006/12/12 PHP
php使用gearman进行任务分发操作实例详解
2020/02/26 PHP
跟随鼠标旋转的文字
2006/11/30 Javascript
JavaScript入门教程(1) 什么是JS
2009/01/31 Javascript
jquery 图片Silhouette Fadeins渐显效果
2010/02/07 Javascript
JS delegate与live浅析
2013/12/21 Javascript
JavaScript的21条基本知识点
2014/03/04 Javascript
jquery显示隐藏input对象
2014/07/21 Javascript
zepto.js中tap事件阻止冒泡的实现方法
2015/02/12 Javascript
JavaScript 浏览器对象模型BOM使用介绍
2015/04/13 Javascript
基于jquery步骤进度条源码分享
2015/11/12 Javascript
JQuery实现Ajax加载图片的方法
2015/12/24 Javascript
require.js+vue开发微信上传图片组件
2016/10/27 Javascript
IE8兼容Jquery.validate.js的问题
2016/12/01 Javascript
jQuery Validate 相关参数及常用的自定义验证规则
2017/03/06 Javascript
基于vue的换肤功能的示例代码
2017/10/10 Javascript
vue.js+element 默认提示中英文操作
2020/11/11 Javascript
[08:42]DOTA2每周TOP10 精彩击杀集锦vol.2
2014/06/25 DOTA
[02:27]2014DOTA2国际邀请赛 VG赛后采访:更大的挑战在等着我们
2014/07/13 DOTA
Python base64编码解码实例
2015/06/21 Python
Python探索之ModelForm代码详解
2017/10/26 Python
python数字图像处理之高级滤波代码详解
2017/11/23 Python
pandas把dataframe转成Series,改变列中值的类型方法
2018/04/10 Python
Python通过paramiko远程下载Linux服务器上的文件实例
2018/12/27 Python
python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)
2019/06/27 Python
Django 导出项目依赖库到 requirements.txt过程解析
2019/08/23 Python
Python代理IP爬虫的新手使用教程
2019/09/05 Python
使用CSS3的box-sizing属性解决div宽高被内边距撑开的问题
2016/06/28 HTML / CSS
伦敦哈德森鞋:Hudson Shoes
2018/02/06 全球购物
Foot Locker澳洲官网:美国运动服和鞋类零售商
2019/10/11 全球购物
英国钻石公司:British Diamond Company
2020/02/16 全球购物
什么是View State?
2013/01/27 面试题
参观监狱心得体会
2014/01/02 职场文书
跳槽求职信范文
2014/05/26 职场文书
婚内分居协议书范文
2014/11/26 职场文书
2015年小学重阳节活动总结
2015/07/29 职场文书