详解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排序之二维数组的按照字母排序实现代码
Aug 13 PHP
解析使用substr截取UTF-8中文字符串出现乱码的问题
Jun 20 PHP
深入extjs与php参数交互的详解
Jun 25 PHP
php中利用explode函数分割字符串到数组
Feb 08 PHP
php基于双向循环队列实现历史记录的前进后退等功能
Aug 08 PHP
PHP中Restful api 错误提示返回值实现思路
Apr 12 PHP
PHP实现四种基础排序算法的运行时间比较(推荐)
Aug 11 PHP
PHP实现判断数组是一维、二维或几维的方法
Feb 06 PHP
Bootstrap+PHP实现多图上传功能实例详解
Apr 08 PHP
php识别翻转iphone拍摄的颠倒图片
May 17 PHP
ThinkPHP5.0框架实现切换数据库的方法分析
Oct 30 PHP
PHP正则表达式之RCEService回溯
Apr 11 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自动加载autoload机制示例分享
2014/02/20 PHP
教你在header中隐藏php的版本信息
2016/08/10 PHP
简单实现php上传文件功能
2017/09/21 PHP
jQuery live
2009/05/15 Javascript
JS 用6N±1法求素数 实例教程
2009/10/20 Javascript
JavaScript 判断日期格式是否正确的实现代码
2011/07/04 Javascript
jQuery实现类似淘宝购物车全选状态示例
2013/06/26 Javascript
js读取注册表的键值示例
2013/09/25 Javascript
javaScript使用EL表达式的几种方式
2014/05/27 Javascript
jQuery中$.click()无效问题分析
2015/01/29 Javascript
微信WeixinJSBridge API使用实例
2015/05/25 Javascript
纯jquery实现模仿淘宝购物车结算
2015/08/20 Javascript
jQuery超精致图片轮播幻灯片特效代码分享
2015/09/10 Javascript
jQuery javascript获得网页的高度与宽度的实现代码
2016/04/26 Javascript
移动端横屏的JS代码(beta)
2016/05/16 Javascript
jQuery+vue.js实现的九宫格拼图游戏完整实例【附源码下载】
2017/09/12 jQuery
Vue使用Proxy监听所有接口状态的方法实现
2019/06/07 Javascript
JS实现移动端点击按钮复制文本内容
2019/07/28 Javascript
js实现简单选项卡制作
2020/08/05 Javascript
python 中字典嵌套列表的方法
2018/07/03 Python
不管你的Python报什么错,用这个模块就能正常运行
2018/09/14 Python
更改Python的pip install 默认安装依赖路径方法详解
2018/10/27 Python
python求最大公约数和最小公倍数的简单方法
2020/02/13 Python
Django import export实现数据库导入导出方式
2020/04/03 Python
Python操作Excel把数据分给sheet
2020/05/20 Python
使用pygame实现垃圾分类小游戏功能(已获校级二等奖)
2020/07/23 Python
通过实例解析Python文件操作实现步骤
2020/09/21 Python
html5 touch事件实现触屏页面上下滑动(二)
2016/03/10 HTML / CSS
瑞典领先的汽车零部件网上零售商:bildelaronline24.se
2017/01/12 全球购物
幼儿园教师教育感言
2014/02/28 职场文书
2014年党的群众路线教育实践活动总结
2014/04/25 职场文书
给市场的环保建议书
2014/05/14 职场文书
跳蚤市场口号
2014/06/13 职场文书
2019职场实习报告该怎么写?
2019/07/01 职场文书
导游词之介休绵山
2019/12/31 职场文书
如何利用js在两个html窗口间通信
2021/04/27 Javascript