详解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 相关文章推荐
在Windows中安装Apache2和PHP4的权威指南
Oct 09 PHP
通过对服务器端特性的配置加强php的安全
Oct 09 PHP
php中显示数组与对象的实现代码
Apr 18 PHP
php小经验:解析preg_match与preg_match_all 函数
Jun 29 PHP
19个超实用的PHP代码片段
Mar 14 PHP
ThinkPHP结合AjaxFileUploader实现无刷新文件上传的方法
Oct 29 PHP
用 Composer构建自己的 PHP 框架之设计 MVC
Oct 30 PHP
php实现汉字验证码和算式验证码的方法
Mar 07 PHP
Yii框架上传图片用法总结
Mar 28 PHP
php简单截取字符串代码示例
Oct 19 PHP
PHP常用函数之根据生日计算年龄功能示例
Oct 21 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
Feb 27 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 多维数组排序实现代码
2009/08/05 PHP
php从字符串创建函数的方法
2015/03/16 PHP
php截取指定2个字符之间字符串的方法
2015/04/15 PHP
PHP7之Mongodb API使用详解
2015/12/26 PHP
php代码架构的八点注意事项
2016/01/25 PHP
php rmdir使用递归函数删除非空目录实例详解
2016/10/20 PHP
PHP中仿制 ecshop验证码实例
2017/01/06 PHP
避免回车键导致的页面无意义刷新的解决方法
2011/04/12 Javascript
jquery制作搜狐快站页面效果示例分享
2014/02/21 Javascript
javascript检测浏览器的缩放状态实现代码
2014/09/28 Javascript
使用jquery+CSS实现控制打印样式
2014/12/31 Javascript
js实现碰撞检测特效代码分享
2016/10/16 Javascript
Bootstrap3 图片(响应式图片&amp;图片形状)
2017/01/04 Javascript
bootstrap的工具提示实例代码
2017/05/17 Javascript
Node.js 基础教程之全局对象
2017/08/06 Javascript
使用jquery的jsonp如何发起跨域请求及其原理详解
2017/08/17 jQuery
从零开始最小实现react服务器渲染详解
2018/01/26 Javascript
vue渲染时闪烁{{}}的问题及解决方法
2018/03/28 Javascript
pm2发布node配置文件ecosystem.json详解
2019/05/15 Javascript
微信公众号H5之微信分享常见错误和问题(小结)
2019/11/14 Javascript
react使用antd表单赋值,用于修改弹框的操作
2020/10/29 Javascript
Python实现PS滤镜的旋转模糊功能示例
2018/01/20 Python
numpy基础教程之np.linalg
2019/02/12 Python
python 获取sqlite3数据库的表名和表字段名的实例
2019/07/17 Python
基于python框架Scrapy爬取自己的博客内容过程详解
2019/08/05 Python
python 字典 setdefault()和get()方法比较详解
2019/08/07 Python
pandas实现将日期转换成timestamp
2019/12/07 Python
pytorch 彩色图像转灰度图像实例
2020/01/13 Python
Python 3.8 新功能大揭秘【新手必学】
2020/02/05 Python
jupyter notebook 重装教程
2020/04/16 Python
Python实现Canny及Hough算法代码实例解析
2020/08/06 Python
python opencv实现图像配准与比较
2021/02/09 Python
小学生成长感言
2014/01/30 职场文书
广告学专业毕业生自荐信
2014/05/28 职场文书
乡镇一岗双责责任书
2015/01/29 职场文书
高效课堂教学反思
2016/02/24 职场文书