详解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里的JS打印函数
Oct 09 PHP
浅析PHP 按位与或 (^ 、&amp;)
Jun 21 PHP
让CodeIgniter的ellipsize()支持中文截断的方法
Jun 12 PHP
php防止伪造的数据从URL提交方法
Jun 27 PHP
php使用date和strtotime函数输出指定日期的方法
Nov 14 PHP
php写入数据到CSV文件的方法
Mar 14 PHP
php fseek函数读取大文件两种方法
Oct 12 PHP
thinkphp 验证码 的使用小结
May 07 PHP
PHP实现微信商户支付企业付款到零钱功能
Sep 30 PHP
详解php伪造Referer请求反盗链资源
Jan 24 PHP
PHP中的empty、isset、isnull的区别与使用实例
Mar 22 PHP
关于laravel 子查询 &amp; join的使用
Oct 16 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&amp;&amp;mysql)四
2006/10/09 PHP
php中使用parse_url()对网址进行解析的实现代码(parse_url详解)
2012/01/03 PHP
php四种基础算法代码实例
2013/10/29 PHP
php将文本文件转换csv输出的方法
2014/12/31 PHP
PHPCMS2008广告模板SQL注入漏洞修复
2016/10/11 PHP
Laravel + Elasticsearch 实现中文搜索的方法
2020/02/02 PHP
php的对象传值与引用传值代码实例讲解
2021/02/26 PHP
javascript 全角转换实现代码
2009/07/17 Javascript
javascript的字符串按引用复制和传递,按值来比较介绍与应用
2012/12/28 Javascript
jquery的each方法使用示例分享
2014/03/25 Javascript
Enter回车切换输入焦点实现思路与代码兼容各大浏览器
2014/09/01 Javascript
jQuery 实现自动填充邮箱功能(带下拉提示)
2014/10/14 Javascript
jQuery EasyUI datagrid实现本地分页的方法
2015/02/13 Javascript
jquery实现的3D旋转木马特效代码分享
2015/08/25 Javascript
前端程序员必须知道的高性能Javascript知识
2016/08/24 Javascript
webpack4 css打包压缩问题的解决
2018/05/18 Javascript
vuex + keep-alive实现tab标签页面缓存功能
2019/10/17 Javascript
[01:00:14]DOTA2官方TI8总决赛纪录片 真视界True Sight
2019/01/16 DOTA
python snownlp情感分析简易demo(分享)
2017/06/04 Python
numpy数组拼接简单示例
2017/12/15 Python
Python设置matplotlib.plot的坐标轴刻度间隔以及刻度范围
2019/06/25 Python
这可能是最好玩的python GUI入门实例(推荐)
2019/07/19 Python
django搭建项目配置环境和创建表过程详解
2019/07/22 Python
你还在@微信官方?聊聊Python生成你想要的微信头像
2019/09/25 Python
安装Pycharm2019以及配置anconda教程的方法步骤
2019/11/11 Python
双向RNN:bidirectional_dynamic_rnn()函数的使用详解
2020/01/20 Python
python实现横向拼接图片
2020/03/23 Python
Python面向对象实现方法总结
2020/08/12 Python
css3中背景尺寸background-size详解
2014/09/02 HTML / CSS
关于canvas绘制模糊问题的解决方法
2019/09/24 HTML / CSS
final, finally, finalize的区别
2012/03/01 面试题
《美丽的小兴安岭》教学反思
2014/02/26 职场文书
美化环境标语
2014/06/20 职场文书
2015年发展党员工作总结报告
2015/03/31 职场文书
2015年生活老师工作总结
2015/05/27 职场文书
简历自我评价:教师师德表现自我评价
2019/04/24 职场文书