详解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 相关文章推荐
用文本文件制作留言板提示(上)
Oct 09 PHP
vBulletin HACK----关于排版的两个HACK
Oct 09 PHP
php生成缩略图填充白边(等比缩略图方案)
Dec 25 PHP
php json_encode()函数返回json数据实例代码
Oct 10 PHP
PHP curl CURLOPT_RETURNTRANSFER参数的作用使用实例
Feb 07 PHP
PHP程序中使用adodb连接不同数据库的代码实例
Dec 19 PHP
WordPress中使主题支持小工具以及添加插件启用函数
Dec 22 PHP
thinkPHP中分页用法实例分析
Dec 26 PHP
PHP各种异常和错误的拦截方法及发生致命错误时进行报警
Jan 19 PHP
PHP爬虫之百万级别知乎用户数据爬取与分析
Jan 22 PHP
关于PHP内置的字符串处理函数详解
Feb 04 PHP
php实现的mysqldb读写分离操作类示例
Feb 07 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正则的Unknown Modifier错误解决方法
2010/03/02 PHP
php使用指定字符列表生成随机字符串的方法
2015/04/18 PHP
制作个性化的WordPress登陆界面的实例教程
2016/05/21 PHP
php PDO实现的事务回滚示例
2017/03/23 PHP
基于Codeigniter框架实现的student信息系统站点动态发布功能详解
2017/03/23 PHP
ThinkPHP框架下微信支付功能总结踩坑笔记
2019/04/10 PHP
Stop SQL Server
2007/06/21 Javascript
对字符串进行HTML编码和解码的JavaScript函数
2010/02/01 Javascript
10个基于jQuery或JavaScript的WYSIWYG 编辑器整理
2010/05/06 Javascript
jquery获取特定name所有选中的checkbox,支持IE9标准模式
2013/03/18 Javascript
JavaScript实现找出字符串中第一个不重复的字符
2014/09/03 Javascript
AngularJS内置指令
2015/02/04 Javascript
Node.js的MongoDB驱动Mongoose基本使用教程
2016/03/01 Javascript
JS判断是否长按某一键的方法
2016/03/02 Javascript
JavaScript实现翻页功能(附效果图)
2017/02/16 Javascript
JavaScript 值类型和引用类型的初次研究(推荐)
2017/07/19 Javascript
vue mintui-Loadmore结合实现下拉刷新和上拉加载示例
2017/10/12 Javascript
详解vue项目中调用百度地图API使用方法
2019/04/25 Javascript
使用JQuery自动完成插件Auto Complete详解
2019/06/18 jQuery
国内常用的js类库大全(CDN公共库)
2020/06/24 Javascript
一份python入门应该看的学习资料
2018/04/11 Python
python矩阵转换为一维数组的实例
2018/06/05 Python
python 用下标截取字符串的实例
2018/12/25 Python
python初学者,用python实现基本的学生管理系统(python3)代码实例
2019/04/10 Python
如何用Python来搭建一个简单的推荐系统
2019/08/07 Python
python字符串下标与切片及使用方法
2020/02/13 Python
利用python+request通过接口实现人员通行记录上传功能
2021/01/13 Python
介绍一下游标
2012/01/10 面试题
行政专员的岗位职责
2014/03/10 职场文书
个人评语大全
2014/05/04 职场文书
青年文明号口号
2014/06/17 职场文书
十佳党员事迹材料
2014/08/28 职场文书
就业协议书
2014/09/12 职场文书
学校实习推荐信
2015/03/27 职场文书
2015年新农村建设指导员工作总结
2015/07/24 职场文书
springboot如何接收application/x-www-form-urlencoded类型的请求
2021/11/02 Java/Android