详解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漏洞小结
Feb 05 PHP
编译php 5.2.14+fpm+memcached(具体操作详解)
Jun 18 PHP
php使用strtotime和date函数判断日期是否有效代码分享
Dec 25 PHP
php中getservbyport与getservbyname函数用法实例
Nov 18 PHP
Yii2中如何使用modal弹窗(基本使用)
May 30 PHP
php无限级分类实现方法分析
Oct 19 PHP
PHP中的多种加密技术及代码示例解析
Oct 20 PHP
php变量与数组相互转换的方法(extract与compact)
Dec 02 PHP
PHP多进程编程实例详解
Jul 19 PHP
ThinkPHP开发--使用七牛云储存
Sep 14 PHP
浅谈laravel数据库查询返回的数据形式
Oct 21 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
Apr 05 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
在“咖啡之国”感受咖啡文化
2021/03/03 咖啡文化
介绍php设计模式中的工厂模式
2008/06/12 PHP
Laravel中注册Facades的步骤详解
2016/03/16 PHP
Laravel+Intervention实现上传图片功能示例
2019/07/09 PHP
RR vs IO BO3 第二场2.13
2021/03/10 DOTA
农历与西历对照
2006/09/06 Javascript
让iframe子窗体取父窗体地址栏参数(querystring)
2009/10/13 Javascript
一个可拖拽列宽表格实例演示
2012/11/26 Javascript
js获取判断上传文件后缀名的示例代码
2014/02/19 Javascript
javascript格式化指定日期对象的方法
2015/04/21 Javascript
浅谈js中调用函数时加不加括号的问题
2016/07/28 Javascript
JavaScript页面实时显示当前时间实例代码
2016/10/23 Javascript
BootStrap Validator对于隐藏域验证和程序赋值即时验证的问题浅析
2016/12/01 Javascript
JS常用知识点整理
2017/01/21 Javascript
react.js 获取真实的DOM节点实例(必看)
2017/04/17 Javascript
利用types增强vscode中js代码提示功能详解
2017/07/07 Javascript
JS写谷歌浏览器chrome的外挂实例
2018/01/11 Javascript
Vue创建头部组件示例代码详解
2018/10/23 Javascript
详解基于webpack&amp;gettext的前端多语言方案
2019/01/29 Javascript
vue 实现强制类型转换 数字类型转为字符串
2019/11/07 Javascript
vue-cli3.X快速创建项目的方法步骤
2019/11/14 Javascript
JavaScript进制转换实现方法解析
2020/01/18 Javascript
jQuery实现中奖播报功能(让文本滚动起来) 简单设置数值即可
2020/03/20 jQuery
jQuery+Ajax+js实现请求json格式数据并渲染到html页面操作示例
2020/06/02 jQuery
Vue实现简单的留言板
2020/10/23 Javascript
Python之os操作方法(详解)
2017/06/15 Python
分享一个简单的python读写文件脚本
2017/11/25 Python
Python SQLAlchemy库的使用方法
2020/10/13 Python
使用python实现学生信息管理系统
2021/02/25 Python
计算机专业个人求职信范例
2013/09/23 职场文书
大学生自我评价怎样写好
2013/10/23 职场文书
国际会计专业求职信
2014/08/04 职场文书
财务助理岗位职责范本
2014/10/09 职场文书
2014收银员工作总结范文
2014/12/16 职场文书
Java内存模型之happens-before概念详解
2021/06/13 Java/Android
Windows 11上手初体验:任务栏和开始菜单等迎来大改
2021/11/21 数码科技