详解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 xfocus防注入资料
Apr 27 PHP
simplehtmldom Doc api帮助文档
Mar 26 PHP
2014过年倒计时示例
Jan 31 PHP
PHP+MySQL删除操作实例
Jan 21 PHP
Codeigniter实现发送带附件的邮件
Mar 19 PHP
纯php生成随机密码
Oct 30 PHP
php在数据库抽象层简单使用PDO的方法
Nov 03 PHP
PHP中的session安全吗?
Jan 22 PHP
3种方法轻松处理php开发中emoji表情的问题
Jul 18 PHP
PHP中的日期时间处理利器实例(Carbon)
Jun 09 PHP
PHP获取HTTP body内容的方法
Dec 31 PHP
thinkPHP5使用Rabc实现权限管理
Aug 28 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
dedecms后台验证码总提示错误的解决方法
2007/03/21 PHP
php结合js实现点击超链接执行删除确认操作
2014/10/31 PHP
WordPress导航菜单的滚动和淡入淡出效果的实现要点
2015/12/14 PHP
用php和jQuery来实现“顶”和“踩”的投票功能
2016/10/13 PHP
$(&quot;&quot;).click与onclick的区别示例介绍
2014/09/25 Javascript
浅谈javascript语法和定时函数
2015/05/03 Javascript
jQuery实现定时读取分析xml文件的方法
2015/07/16 Javascript
js判断某个字符出现的次数的简单实例
2016/06/03 Javascript
javascript之Array 数组对象详解
2016/06/07 Javascript
AngularJS ng-repeat数组有重复值的解决方法
2016/10/23 Javascript
详解vue-cli快速构建项目以及引入bootstrap、jq
2017/05/26 Javascript
js 概率计算(简单版)
2017/09/12 Javascript
微信小程序登录态和检验注册过没的app.js写法
2019/05/22 Javascript
Vuex的API文档说明详解
2020/02/05 Javascript
部署vue+Springboot前后端分离项目的步骤实现
2020/05/31 Javascript
vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据操作
2020/07/31 Javascript
Nodejs在局域网配置https访问的实现方法
2020/10/17 NodeJs
[02:41]DOTA2英雄基础教程 亚巴顿
2014/01/02 DOTA
[41:08]TNC vs VG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python实现问号表达式(?)的方法
2013/11/27 Python
python实现通过pil模块对图片格式进行转换的方法
2015/03/24 Python
Python之文字转图片方法
2018/05/10 Python
python实现人人自动回复、抢沙发功能
2018/06/08 Python
tensorflow指定GPU与动态分配GPU memory设置
2020/02/03 Python
各大浏览器 CSS3 和 HTML5 兼容速查表 图文
2010/04/01 HTML / CSS
Moda Operandi官网:美国奢侈品电商,海淘秀场T台同款
2020/05/26 全球购物
测试驱动开发的主要步骤是什么
2014/12/10 面试题
生物技术专业研究生自荐信
2013/09/22 职场文书
应届毕业生的自我鉴定
2013/11/13 职场文书
学校安全生产月活动总结
2014/07/05 职场文书
社区安全生产月活动总结
2014/07/05 职场文书
五一劳动节演讲稿
2014/09/12 职场文书
仓库保管员岗位职责
2015/02/09 职场文书
大学生安全教育心得体会
2016/01/15 职场文书
《夸父追日》教学反思
2016/02/20 职场文书
工作报告范文
2019/06/20 职场文书